《代码大全2》读书笔记3

 

​ 这周我阅读了《代码大全2》中与具体编码相关的部分,包括控制流、变量命名、数据结构的使用等。

​ 先说控制流,作者认为,控制流应该尽量简单、清晰,函数的功能应该单一,异步编程时应该避免回调地狱。在语言中需要表达多重分支结构时,应该用else if或guard expression。循环的时候多用迭代器,多重循环结构应该设有标记变量,方便多层跳出。选择合适的循环类型(for,while,do-while),表达最贴切的语义。goto 和提前return应该尽量避免,函数在大多数情况下应该在最后返回。尽量避免复杂的调用关系,特别是很多函数互相调用的情况。循环应该考虑是否能终止,递归函数应该考虑递归层数是否过深。查找表和状态机模型也是很重要的控制流设计方法。

​ 总之,对于控制流来说,应该尽量清晰易维护易测试,并且尽量和逻辑一一对应,不要使用一些奇怪的方法来模拟正常的逻辑。

​ 变量命名也很有讲究,首先命名风格应该统一,我个人比较喜欢下划线风格的命名方式。变量尽量定义为const或final,即初始化一次之后就不再改变,在每次变量的语义发生转化时,都应该换变量名。变量名长度应该在5-13个字母之间,这是最容易调试的。变量的语义应该尽量明确,减少使用handle,perform这一类万能动词。多使用对应的词组,如open-close。变量名应该描述抽象世界的逻辑,而不是计算机世界的实现。如一个红黑树实现id->name的映射,应该命名为map_id_name,而不是rbtree_id_name。

​ 对于数据结构,指针类型是一大难题。在性能要求不是极致的情况下,应该尽量使用有垃圾回收功能的语言。就算用c++,也应该多使用自动指针。如果非要自己管理内存,那么你需要遵循严格的规范,以避免内存泄漏和段错误。尽量避免基础类型的使用,例如年可以用int来表达,但更好的方式是定义一个year类型,并且定义一个简单的构造函数,这样,在需要传入年的数据时,在c++里可以 year {1998}来表达,这样可读性比较好,类型也比较安全。

原文地址:https://www.cnblogs.com/nicekingwei/p/8623078.html