如果汉语背后没有文化,文化背后没有思想,思想背后没有精神,光TMD编造老娘和乔布斯没有说过的话,那中国永远不会是一个伟大的国家。——撒切尔夫人

《代码整洁之道》读书笔记三

分隔指令与询问

函数要行做什么事( 例如 user.setName('xxx') )、要么回答什么事( 例如 user.isVip() )。一个函数里不要把两件事都干了。

如何写出好函数

  • 分解函数
  • 修改名称
  • 消除重复

注释

好的注释

  • 法律信息
  • 警示性注释
  • TODO 注释虽好,但也要定期查看,删除不再需要的

坏的注释

  • 循规式注释。 例如每个函数都要有Javadoc或每个变量都要有注释的规矩全然是愚蠢可笑的。这类注释徒然让代码变得散乱
  • 注释掉的代码。 现在已经有源代码控制系统,不要的代码应该立即删掉
  • 不明显的联系。 注释及其描述的代码之间的联系应该显而易见。注释的作用是解释未能自行解释的代码。如果注释本身还需要解释,就太遗憾了
  • 切断代码间的联系

    // bad
    public class ReportConfig {
        //
        // The class name of the reporter listener
        //
        private String m_className;
        
        //
        //The properties of the reporter listener
        //
        private List<Property> m_properties = new ArrayList<Property>();
        
        public void addProperty(Property property) {
            m_properties.add(property);
        }
    }
    
    // good
    public class ReportConfig {
        private String m_className;
        private List<Property> m_properties = new ArrayList<Property>();
        
        public void addProperty(Property property) {
            m_properties.add(property);
        }
    }

格式

垂直距离

  • 变量声名。 大多数情况下变量声名应该尽可能靠近其使用的位置。但是在类内,变量声名应该统一放在顶部,因为这样读者可以一眼看出这个类有什么变量。
  • 相关函数。 若某个函数调用了另一个函数,就应该把它们放到一起,而且调用者应该尽可能放在被调用者上面。这样程序就有个自然顺序。
  • 概念相关。 概念相关的代码应该放到一起。相关性越强,彼此之间的距离就该越短

    public    class Assert {
        static public void assertTrue(String message, boolean codition(){}
        static public void assertTrue(boolean codition(){}
        static public void assertFalse(String message, boolean codition(){}
        // .....
    }

    这些函数有关极强的概念相关性,因为他们拥有共同的命名模式,执行同一基础任务的不同变种。互相调用是第二位的。即便没有互相调用。也应该放在一起。

posted @   崤函隳  阅读(62)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2020-10-30 2020/10/30 刘一辰的JAVA随笔
点击右上角即可分享
微信分享提示