软件的质量属性
鲁棒 - Solid and Robust Code
简洁 - Maintainable and Simple Code
高效 - Fast Code
简短 - Small Code
共享 - Re-usable Code
可测试 - Testable Code
可移植 - Portable Code
?
集百家之长, 归我所用 - Follow Basic Coding Style
1.代码能够清晰的表达你的思路
2.代码应该具备自解释能力,注释代码别是单纯解释语句,这种注释毫无疑义
3.编码的缩进和排版规范
4.所有的函数和变量应有他人容易理解的名字
5.将Tab键改用为4个空格字符
6.减少单个函数的长度,控制在50-100行以内
7.避免幻数,多使用枚举和常量的定义
?
取个好名字 - Use Naming Conventions
1.采用匈牙利命名法对变量进行命名
2.名字要清晰表达含义,不要怕长
?
凌波微步, 未必摔跤 - Evil goto’s? Maybe Not…
1.goto的使用应该遵循原则,而不是全盘否定
2.不用写高深晦涩的语句,不要一味追求性能忽视代码可读性
3.模式并不是一味正确,特定问题更需要考虑反模式
?
先发制人, 后发制于人- Practice Defensive Coding
1.尽量保持代码的简洁和简单
2.调用其它接口和函数时候首先对返回值进行检查
3.避免有符号/无符号,32位/16位,被零除等误算情况
?
见招拆招, 滴水不漏 - Handle The Error Cases: They Will Occur!
1.通过异常处理机制来保证程序代码的健壮性
2.异常处理中一定要注意资源的释放
3.异常处理要关注日志的详细记录,便于后续BUG分析
4.不用把后台编码或系统异常直接抛给用户
?
熟习剑法刀术, 所向无敌 - Learn Win32 API Seriously
1.Win32 API是微软平台编程根本
2.对系统强大的公用类库的熟悉和整理将事半功倍
?
双手互搏, 无坚不摧 - Test, but don’t stop there
1.如果你没有进行测试,你完成的代码将仅仅是个半成品
2.尽可能多的对自己的代码进行测试
3.编码人员应该更专注于百盒测试和单元测试
4.要善于使用JUnit,NUnit,PureCoverage,Compuware,NCover等测试工具
5.相互间的Review和走查是对代码可维护性的重要测试手段
6.有特殊性能要求时候需要对相关功能或模块单独进行性能测试
?
活用段言 - Use, don’t abuse, assertions
1.断言可以很好的描述假设和不可能的情况
2.断言对程序Debug很有用,可以尽早的发现程序问题
?
草木皆兵, 不可大意 - Avoid Assumptions
1.考虑到用户使用的各种场景
2.不用假设用户会正确输入数据,要做好各种完整性和边界的检验
3.程序中70%左右代码是为了保证这种完整性服务的,正常条件下功能可能30%代码就实现了
?
最高境界, 无招胜有招 - Stop writing so much code
1.一味拷贝粘贴代码就是在制造拷贝BUG,这种代码对系统无任何意义
2.编码过程注意重用,函数级->组件级->系统级
3.通过重构持续改进代码质量,改进自我逻辑思维
?
最后总结下:
1.养成良好编码习惯,你面试的一小段代码可能就足一展现你全部陋习。
2.熟练使用好各种辅助工具,但不要全部依赖工具,最主要是学习分析和设计的思考方式
3.注重单元测试,关注程序性能,可维护性,可测试性是编码技能提升重要手段
4.通过重构使编码过程形成完整闭环的反馈回路,重构能力可以很好体现自己的设计能力
5.养成良好习惯,形成自己的编码过程检查单,多请教老员工可能事半功倍。

本文来源:http://blog.sina.com.cn/u/493a8455010004pz

读林博士写好代码十个秘诀相关推荐

  1. AT89S8253片内EEPROM字节读、字节写、页读、页写驱动代码、注意事项及注释

    在编写AT89S8253片内EEPROM读写驱动程序时,要特别注意数据读写指令MOVX: 当EECON寄存器的EEMEN位置位时,MOVX访问EEPROM: 当EECON寄存器的EEMEN位清零时,M ...

  2. 用集合return多个值_Python拾珍:用这些功能写出更简洁、更可读或更高效的代码

    本章我会带领大家回顾那些遗漏的地方.Python提供了不少并不是完全必需的功能(不用它们也能写出好代码),但有时候,使用这些功能可以写出更简洁.更可读或者更高效的代码,甚至有时候三者兼得. 19.1 ...

  3. Python拾珍:用这些功能写出更简洁、更可读或更高效的代码

    本章我会带领大家回顾那些遗漏的地方.Python提供了不少并不是完全必需的功能(不用它们也能写出好代码),但有时候,使用这些功能可以写出更简洁.更可读或者更高效的代码,甚至有时候三者兼得. 19.1 ...

  4. 殷浩详解DDD:如何避免写流水账代码?

    简介: 在日常工作中我观察到,面对老系统重构和迁移场景,有大量代码属于流水账代码,通常能看到开发在对外的API接口里直接写业务逻辑代码,或者在一个服务里大量的堆接口,导致业务逻辑实际无法收敛,接口复用 ...

  5. 李开复博士写给中国大学生的 信

    李开复博士写给中国大学生的第一封信 [原创] Kai-Fu 2003-11-21 华裔美国科学家.微软中国研究院院长李开复是一位在语音识别.人工智能.三维图形和国际互联网多媒体等领域享有很高声誉的年轻 ...

  6. 当写烂代码的人离职之后....

    半个月没有写blog了,正好是春节假期. 静下来,想想自己写的代码,真是有些汗颜,更有些惶恐. 加油吧~ 偶尔看到拉勾网上的一篇文章,记录下来,鞭策自己: 作者:蛋疼的AXB 来源:程序人生 休息一直 ...

  7. 淘系技术-DDD-聊聊如何避免写流水账代码

    向读者们道歉,由于工作太忙,又对文章质量有追求,所以这篇文章产出速度较慢,但可以向大家保证:文章中的内容都经过了反复实践和踩坑.DDD系列的前几篇文章可以点击文字下方阅读~ DDD系列第一讲 DDD系 ...

  8. 花三千万写出的十个 to B创业大坑(中)

    常垒资本聚焦to B早期创业投资,我们这篇文章献给准备以及正在创业的朋友们.阅读之前欢迎先阅读上篇,花三千万写出的十个 to B创业大坑(上)(点击蓝字即可阅读) 作者:威努特    龙国东 编辑:常 ...

  9. 43岁读NLP博士,无关年龄 ,一位70后大哥的励志人生

    每天给你送来NLP技术干货! 来源:西湖大学官微 2017年,鲍光胜和女儿在英国.这一年他决定读博士,为此他准备了5年. #西湖有新生# 鲍光胜还是被媒体围住了,在西湖大学博士生开学典礼上. 他微笑着 ...

最新文章

  1. 0x05.基本算法 - 排序
  2. R语言glm模型预测(predict)过程及Error in eval(predvars, data, env) 错误原因
  3. linux shell sleep usleep 延时命令 秒 毫秒 微秒
  4. 多元统计分析-概率,期望,方差,正态分布
  5. COND SWITCH 操作符
  6. signature=cc0735b80de74e294c47d2b8d527fd10,Fungal Transposable Elements
  7. jvm是运行在操作系统之上的,他和硬件没有直接的交互
  8. B. Alyona and a tree(dsu on tree + bit)
  9. 【Spring】Spring DataSourceTransactionManager
  10. QT学习笔记之对话框
  11. 洛谷——P1909 [NOIP2016 普及组] 买铅笔
  12. Codeforces Round #511 (Div. 1) 题解
  13. 1.3、TetGen网格化过程之描述
  14. java 判断 继承接口_java基础-接口、继承、多态
  15. sap 打印预览界面点击打印时记录打印次数_9个Excel打印神技巧!从此打印不求人!...
  16. 【Unity3D入门教程】Unity3D简介、安装和程序发布
  17. JQuery 如何使用插件如何安装插件(详细讲解)
  18. 微信哪个电话能转人工服务器,微信人工客服电话多少?微信客服怎么打转人工(这份教程收好了)...
  19. freeipa 客户端 Kerberos认证 SSSD关系
  20. 手机电路板文件_三轮制裁后,华为手机业务还能不能继续?“胡杨”就是答案...

热门文章

  1. 常被忽略的React Children用法
  2. bugku souce
  3. iOS操作系统的层次结构
  4. Cisco MPLS VPN Option A
  5. 仿毛笔字的自定义绘图View
  6. 电脑网络连接受限的解决方法
  7. java发送邮件带多个附件_Java发送邮件(支持多个附件)
  8. Pycharm 快捷键无效的解决方法
  9. xenserve使用ISOr创建VM
  10. linux运维需要掌握的,学习Linux运维需要掌握哪些技能?Linux运维