[ZZ]39条更好的软件开发方法

1.重构是程序员的主力技能。

2.工作日志能提升脑容量。

3.先用profiler调查,才有脸谈优化。

4.注释贵精不贵多。杜绝大姨妈般的“例注”。漫山遍野的碎碎念注释,实际就是背景噪音。

5.普通程序员+google=超级程序员。

6.单元测试总是合算的。

7.不要先写框架再写实现。最好反过来,从原型中提炼框架。

8.代码结构清晰,其它问题都不算事儿。

9.好的项目作风硬派,一键测试,一键发布,一键部署; 烂的项目生性猥琐,口口相传,不立文字,神神秘秘。

10.编码不要畏惧变化,要拥抱变化。

11.常充电。程序员只有一种死法:土死的。

12. 编程之事,隔离是方向,起名是关键,测试是主角,调试是补充,版本控制是后悔药。

13. 一行代码一个兵。形成建制才能有战斗力。单位规模不宜过大,千人班,万人排易成万人坑。

14. 重构/优化/修复Bug,同时只能作一件。

15. 简单模块注意封装,复杂模块注意分层。

16. 人脑性能有限,整洁胜于杂乱。读不懂的代码,尝试整理下格式; 不好用的接口,尝试重新封装下。

17. 迭代速度决定工作强度。想多快好省,就从简化开发流程,加快迭代速度开始。

18. 忘掉优化写代码。过早优化等同恶意破坏;忘掉代码作优化。优化要基于性能测试,而不是纠结于字里行间。

19. 最好的工具是纸笔;其次好的是markdown。

20. leader问任务时间,若答不上来,可能是任务拆分还不够细。

21. 宁可多算一周,不可少估一天。过于“乐观”容易让boss受惊吓。

22. 最有用的语言是English。其次的可能是Python。

23. 百闻不如一见。画出结果,一目了然。调试耗时将大大缩短。

24. 资源、代码应一道受版本管理。资源匹配错误远比代码匹配错误更难排查。

25. 不要基于想象开发, 要基于原型开发。原型的价值是快速验证想法,帮大家节省时间。

26. 序列化首选明文文本 。诸如二进制、混淆、加密、压缩等等有需要时再加。

27. 编译器永远比你懂微观优化。只能向它不擅长的方向努力。

28. 不要定过大、过远、过细的计划。即使定了也没有用。

29. 至少半数时间将花在集成上。时间,时间,时间总是不够。

30. 与主流意见/方法/风格/习惯相悖时,先检讨自己最可靠。

31. 出现bug主动查,不管是不是你的。这能让你业务能力猛涨、个人形象飙升; 如果你的bug被别人揪出来.....呵呵,那你会很被动~≧﹏≦

32. 不知怎么选技术书时就挑薄的。起码不会太贵,且你能看完。

33. git是最棒的。简单,可靠,免费。

34. 仅对“可预测的非理性”抛断言。

35. Log要写时间与分类。并且要能重定向输出。

36. 注释是稍差的文档。更好的是清晰的命名。让代码讲自己的故事。

37. 造轮子是很好的锻炼方法。前提是你见过别的轮子。

38. code review最好以小组/结对的形式。对业务有一定了解,建议会更有价值(但不绝对)。而且不会成为负担。管理员个人review则很容易成team的瓶颈。

39. 提问前先做调研。问不到点上既被鄙视,又浪费自己的时间。

原文地址:https://www.cnblogs.com/pegasus923/p/10367985.html

时间: 2024-08-05 00:52:03

[ZZ]39条更好的软件开发方法的相关文章

【转】寻求一种更好的软件工程研究方法

Mary Shaw 寻求一种更好的软件工程研究方法 Mary Shaw School of Computer Science, Carnegie Mellon University 摘要关于对物理学,生物学和医学的研究过程,人们早已有了公开的精准的解释.即便是在形式上看似简单,但这个领域的内和外也算提供了有价值的“高水准研究”的指导.但是软件工程就不同了,人们至今尚未明确找到并解释如何研究以及用何种方法去进行研究??.(方法论也是顶层设计,只有找到了高屋建瓴的研究方法,才能推动这个行业的进步.本

系统分析师笔记-案例分析-软件开发方法

案例分析-软件开发方法 原型开发方法的问题: 1,客户时候已经看到了软件的工作版本,却无法理解,原因在于为了使原型能够很快使用,开发者没有考虑软件的总体质量和长期可维护性. 2,开发者常常需要实施上的折中使原型能尽快工作. XP(极限编程)缺点 1,"非要用文档时才编写",实际执行中非常容易不忽视文档. 2,简单设计.测试先行.重构.集体代码所有制.持续集成某种意义上维背了程序员的传统习惯. 3,小型发布.结对编程.每周工作40小时,经常让管理者不可理解. 4,现场客户实践经常无法得到

软件开发方法

在上个世纪60年代中期爆发了众所周知的软件危机.为了克服这一危机,在1968.1969年连续召开的两次著名的NATO会议上提出了软件工程这一术语,并在以后不断发展.完善.与此同时,软件研究人员也在不断探索新的软件开发方法.至今已形成了八类软件开发方法.中文名   软件开发方法 提出时间   1972年 原则    意外故障采取措施 1 Parnas方法 2 SASD方法 3 面向数据结构的软件开发方法 4 Jackson方法 5 Warnier方法 6 问题分析法 7 面向对象的软件开发方法 8

今天学习的结构方法,也就是面向功能的软件开发方法

结构化方法 结构化开发方法是由E.Yourdon和L.L.Constantine提出的,即所谓SASD方法,也是可称为面向功能的软件开发方法或面向数据流的软件开发方法.SASD方法是20世纪80年代使用最广泛的软件开发方法.它首先用结构化分析(SA)对软件进行需求分析,然后用结构设计(SD)方法进行总体设计,最后是结构化编程(SP).它给出了两类典型的软件结构(变换型和事务型),使软件开发的成功率大大提高.

软件工程与软件开发模型、软件开发方法

什么是软件工程? 软件工程一直以来都缺乏一个统一的定义. IEEE给出的定义是:软件工程是:1.将系统化的.严格约束的.可质量化的方法应用于软件的开发.运行和维护,即将工程化应用于软件:2.在1中所述方法的研究. 比较认可的一种定义是:软件工程是研究和应用如何以系统性的.规范化的.可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来. 什么是软件开发方法(或软件开发过程)? 软件开发方法找不到统一的定义,但是我们说极限编程(Extr

Code Complete 笔记—— 第二章 用隐喻来更充分理解软件开发

在这章里面,提到的隐喻,类同于比喻(建模)的方法的去理解软件开发. 隐喻的优点在于其可预期的效果能被所有人所理解.不必要的沟通和误解也因此大为减低,学习与教授更为快速,实际上,隐喻是对概念进行内在化和抽象的一种途径,它让人们更高的层面上思考问题,从而避免低层次的错误. -- Femando J.Corbato 如何使用软件终端饿隐喻? 用来提高对编程问题和编程过程的洞察力 用来帮助思考编程过程中的活动,想象出更好地做事情的方法 要点: 隐喻是启示而不是算法,因此它们往往有一点随意(sloppy)

开发的本质 从更高点看软件开发的侧重点

在技术外行人看来所有的程序员都是一样写代码的.但是深入之后才知道不同程序员他们具体负责的职责却如此千差万别.写PHP的不一定擅长前端,写iOS的不懂Java,写C++的搞不好Java. 我们先来看看技术语言的演变发展. 总体来说行业内是先有汇编,再有C.C++.Java.PHP这些语言.然后它们不断升级推动软件系统极大丰富.后面有了各种系统产品,浏览器等.拿浏览器举例,围绕这个方向又多了Java.HTML,CSS...各种技术.基于Java 又有了基于Java的各种框架,像jQuery. 表现在

Atitit.研发管理--提升效率--软件开发方法DSM总结o99

1. 什么是DSM? 1 2. DSM使用的语言DSL 2 3. 模型的优点 2 4. DSM 跟与MDA区别 2 5. MDA的实现 3 6. 参考 4 1. 什么是DSM? 只有提高抽象层次,将软件直接面向建模专家或系统分析师,然后运用自动化代码生成技术,这样才能高质量大幅度快速开发出软件系统,在OOPSLA(领先的软件工程会议),大家认为DSM可能是一种解决方案.Bill Gates 和 Grady Booch也发表过同样观点. DSM意味Domain-Specific Modeling领

敏捷软件开发?什么是敏捷?

敏捷软件开发?什么是敏捷? 敏捷开发(Agile development)是如今软件工程项目中一个大热的词汇,很多大大小小的开发团队都喜欢高举敏捷开发的旗号,搞出一套显得大大不同于传统的运行模式来区分自己的团队博取眼球,他们手头所做的事情,只是套用一套流行的敏捷开发模板,如Scrum,Crystal,XP到自己的开发流程中,就认为自己的整个开发体系会有一个质的飞越.然而他们是否能真正驾驭所谓的敏捷开发?他们是否理解了敏捷开发的核心理念?这都是要划一个大大的问号. 笔者我在刚刚接触这个词的时候,下