在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式,不管用什么语言做开发,都将对我们系统设计和开发提供指导意义。

深入了解软件开发原则有哪些?

1、不要重复你自己:DRY(Don’trepeatyourself)系统中的每一个组件都要单一,没有歧义,并且权威的表示出来。

2、保持项目的系统正交性:不要让系统间互相耦合,非正交的系统意味着你修改这边的系统,会影响到其他的系统。

非正交的一个典型体现是前端的CSS,网上有很多调侃CSS的段子,CSS的一个修改经常会影响到别的地方,这也是CSS很让人痛苦的一个地方。在后端开发里,我们要尽量让系统间不要相互影响,这对系统的伤害是很大的,并且在排查问题时非常痛苦。

3、保证代码设计的可撤销性:如果你的想法是这个问题的唯一解,那么这会是一个很危险的事情。用户的需求变化的很快,你的决策很可能只在当下是正确的,不存在最终的决策,或者说,时刻要注意和反思,如果现在这个方法行不通,是不是就没法挽回了。

4、做好资源的估算:这里的资源指的是很多代码相关的资源,比如数据库,存储,性能等。在开发前,一定要做好估算,在设计良好的代码结构,保证再未来能够应付变化。

5、把文档尽量多的做在代码里,而不是游离于代码之外。否则,过了一段时间后,你这些文档就没有什么作用了。

6、你不可能写出完美的软件:作为一个开发,你要有这种自觉,自己也不要相信。所以要对自己可能犯的错误,做防御性的编程。

7、异常处理:如果我删掉所有的异常处理代码,这些代码是不是还能运行?如果你的回答是”不能“,那么说明你的异常代码正在被用在非异常的情形中。这样不好。

Java面试题免费领

开课吧:深入了解软件开发原则有哪些?相关推荐

  1. 敏捷软件开发:原则、模式与实践(C#版)

    刚才在china-pub看到<敏捷软件开发:原则.模式与实践(C#版)>已经出版了.这本书是以前那本<敏捷软件开发:原则.模式与实践>的C#版,这是不是说明C#程序员的数量已经 ...

  2. 《敏捷软件开发-原则、方法与实践》-Robert C. Martin

    Review of Agile Software Development: Principles, Patterns, and Practices 本书主要包含4部分内容,这些内容对于今天的软件工程师 ...

  3. 趣图图解 SOLID 软件开发原则

    今天早上我发现了Motivator这个工具.它能让你制作出自己想要的图片.下面就是我的首次尝试,以SOLID软件开发原则为主题的具有启发意义的图片.这图片都是从谷歌里搜索出来的,我"借用&q ...

  4. 对《敏捷软件开发:原则、模式与实践》中保龄球程序重构的一些思考

    前几天看了<敏捷软件开发:原则.模式与实践>中第六章:一次编程实战,文章中主要描述了一对开发人员进行一次记录保龄球比赛成绩程序的开发过程.仔细研究之后,发现一个问题,拿出来和大家讨论讨论. ...

  5. 举例说明层次分析的三大原则_20202021企业软件开发流程(3)软件开发过程和软件开发原则...

    知识点 1.软件过程就是软件开发过程中软件活动的集合. 2.软件过程各阶段定义 1)问题定义:人们通过开展技术探索和市场调查等活动,研究系统的可行性和可能的解决方案,确定待开发系统的总体目标和范围. ...

  6. 一些软件软件开发原则

    下面这些原则,不单单只是软件开发,可以推广到其它生产活动中,甚至我们的生活中. Don't Repeat Yourself (DRY) DRY 是一个最简单的法则,也是最容易被理解的.但它也可能是最难 ...

  7. 敏捷软件开发:原则、模式与实践pdf

    下载地址:网盘下载 内容简介  · · · · · · 在本书中,享誉全球的软件开发专家和软件工程大师Robert C.Martin将向您展示如何解决软件开发人员.项目经理及软件项目领导们所面临的最棘 ...

  8. 《敏捷软件开发(原则模式与实践)》读书笔记

    <敏捷软件开发>读书分享 由于书是由英文书籍翻译,读起来会难免拗口,本次分享是由<敏捷软件开发>结合网上相关资料总结而成. 传统的瀑布式开发 瀑布模型式是最典型的预见性的方法, ...

  9. 《敏捷软件开发-原则、模式与实践》-第一章 敏捷实践

    作为一只菜鸡,刚刚毕业,还未进入华为工作,先读一读本岗位所推荐的书籍,为未来做好准备.写写博客,就当总结,记录每一章自己的收获,先从第一章开始. 第一章其实干货不多,主要就是介绍了一下敏捷联盟的一些历 ...

最新文章

  1. 政府和银行运维的差异
  2. 朝聚眼科完成4亿元B轮融资,兰馨亚洲和阳光融汇投资...
  3. linux使用free命令查看内存占用
  4. Python 字符串方法详解
  5. 面试:一个 Java 字符串到底有多少个字符?
  6. 流控组件Sentinel核心注解@SentinelResource中的参数fallback和blockHandler的使用方式
  7. log4net 日志框架的配置
  8. 十三、制作 iVX音乐分享小程序
  9. SQL数据库调优之性能监视篇
  10. Git 提交错了不用慌,这三招帮你修改记录
  11. Matlab中的逻辑运算:“any”,“all”
  12. 热点争议:Web设计师需要编程知识吗?
  13. 漏洞自动扫描神器AWVS 11安装与使用教程
  14. mysql+修改字段长度语句_mysql sql语句修改字段名称,字段长度
  15. 深度篇——目标检测史(五) 细说 SSD 目标检测
  16. 解密PDF---不支持双面打印打印机-------->双面打印操作
  17. 字符串大小写字母转换c 语言,C语言中对字母进行大小写转换的简单方法
  18. esp32 支持 sd卡 micropython 文件系统_ESP32/ESP8266 MicroPython教程:将文件上传到文件系统...
  19. FastJson耗时
  20. ResNeXt代码复现+超详细注释(PyTorch)

热门文章

  1. verilog中的initial块、always块详细解释
  2. NodeJS链接MongDB
  3. 原型设计应当掌握的四个设计思维:初始、常态、边界、错误
  4. sql索引的填充因子多少最好,填充因子的作用?
  5. JavaScript多线程 html5 Worker, SharedWorker
  6. WIZnet推出串口转以太网模块WIZ550S2E
  7. C# partial 说明
  8. 数据结构上机实践第11周项目3 - 图遍历算法实现
  9. Python List相关函数使用实例
  10. Python配置opencv并在命令行运行