代码整洁之道训练营

课程亮点


一个人不可能在地面上学会游泳!本课程采用完全现场实战的方式,帮助团队快速体验和学会高级面向对象技术,编写出高质量、易维护的代码。


  • 学员分为若干小组(最好是实际工作组),每个小组都有2~3个核心参训人员人


  • 核心参训人员提供总计3000回车行实际工作代码


  • 对其中1000行代码,讲师会在课上现场讲解并改写(改写量一般在300~500行左右)


  • 改写完成后达到极高的标准,包括:


  • 零常数,零for(int i),零else/case(代码中没有任何else和case关键字)、每个函数均小于30回车行


  • 编码有效率在13~15LOC/FP左右(世界纪录级别)


  • 另外2000行作为课堂练习


  • 注意:本课程不涉及性能优化、安全性、多线程等特殊技术。


课程受众


技术经理,开发骨干,资质高的新员工


概览


面向对象,编码规范,设计模式

简洁性,可读性,可维护性


课程大纲


以下内容按时间顺序描述了训练营的整体脉络。除整体脉络外,各个阶段还会穿插相应知识的讲授。

以下描述仅针对其中一个团队,其他团队也各自选定自己的产品代码,并按顺序执行实践。


  • 开篇:编码终极奥义


1.   终极奥义第三层:编码即人类语言


2.   终极奥义第二层:编码即信息


3.   终极奥义第一层:编码是美的


  • 初级篇


1.   此阶段注重语句级别的编程技能,基本上不需要面向对象基础


2.   讲师现场对某个团队的代表性产品进行代码审查重点包括:


3.   变量命名


4.   函数命名


5.   全局变量处理


6.   消除常数


7.   冗余语句的处理


8.   FFT结构(false-false-true)


9.   foreach循环


10. var/auto关键字


11. 所有团队现场对剩余代码进行重构,讲师点评


  • 中级篇


1.   此阶段注重函数级别的编程技能,需要函数封装、模板(泛型)等知识


2.   讲师现场对某个团队的代码进行走读,指出以下问题:


3.   代码克隆


4.   如何消除结构相同、类型不同的if-else或case


5.   模板


6.   Map


7.   三元表达式


8.   所有团队现场对剩余代码进行重构,讲师点评



  • 高级篇


1.   此阶段注重封装、继承、多态等传统面向对象的知识


2.   讲师现场对某个团队的代码进行走读,指出以下问题:


3.   代码克隆


4.   圈复杂度与圈复杂密度


5.   如何消除结构大为不同的大段if-else或case


6.   基类,虚函数


7.   多态与虚函数


8.   接口与多继承


9.   基类vs接口:扩展与实现


10. 所有团队现场对剩余代码进行重构,讲师点评



  • 质量篇


1.   此阶段注重防范开发中、维护中可能产生的编码质量问题


2.   注:实际上此章节所述内容,均会在上述课程中遇到问题时随时提到,此处仅做总结


3.   讲师现场对某个团队的代码进行走读,指出以下问题:


4.   易读性问题


5.   看似技术含量很高的“半截子科技”代码


6.   可维护性问题


7.   成对出现的编码


8.   常数封装位置


9.   多分支结构的处理


10. If-else与case的8种消除方法比较


11. 常见缺陷预防


12. 空指针


13. 数组越界


14. 所有团队现场对剩余代码进行重构,讲师点评


  • 编码心法篇


1.   此阶段注重实际开发动态过程中,人们由于编码次序的差异而造成的思维差异,进而导致的编码质量差异


2.   讲师现场对某个团队的一部分代码进行重写,并展示以下编程心法:


3.   从外向内分解问题出


4.   先编写调用者,后编写底层函数(准TDD开发)


5.   每5~10分钟进行一次编译和测试


6.   随时将问题控制在最近2~5行代码内


7.   内建的质量


8.   随时避免各种不良编程问题,而不是编写后再进行重构


9.   一次性写成“上帝代码”


10. “上帝代码”是在语言框架内,多一行则多,少一行则少,无意中删除或添加任何一个字符将会出现编译错误的代码


11. 首次编写即不包括“陈旧语法”


12. 在第一次编写代码时,按照特有的心法和顺序,从来不需要if-else if/switch case等语法,也不会想到它们


13. 高级话题


14. 超越语言的语法边界


15. C,C++,C#,Java,Python语法进化对比


16. 通过5种语言实现同一个功能的对比,观察人类语言向编码终极奥义的逼近过程


17. 编码消耗率


18. 实现特定数量的功能所需的最低代码量


课程时长


2天


最近培训时间


培训课程