程序之美(转自知乎)
因为程序是逻辑的集合,是一种结构化的事物,因此程序的美往往体现了某种秩序。
1. 基本的秩序是基础 CS 理论的应用,比如程序中实现了一某种数据结构,针对数据结构的某种算法,这些结构和算法都具备一些固定的性质。你的程序具备了这些性质,就在一定层面上(这里是运行时)具备了秩序。数据结构和算法的秩序,就是你的代码“美”的体现;
2. 紧接着就是代码的可约性。也就是你的逻辑是不是可以再化简的,一个等式越化简越接近结果,一段代码越化简越接近本质。你实现的基本算法和数据结构,每一行代码都是必须的吗?如果能够化简,说明逻辑是可约的。如果你能保证代码再简单不过了,你就对自己代码有了自信;
3. 普适性。一段代码是否可以适用于多种类型的输入,比如泛型算法;
4. 对称性。对称性看的往往不是代码逻辑,而是代码本身。最典型的,平移对称。处在同一层次上的所有函数/类的命名、注释风格相同,内部相似(不是相同)逻辑顺序相同,那么可以认为具备平移对称。对称性的好处不仅仅是代码好看,它通常意味着管理一处代码的经验可以不经改变的应用到另一处。从代码阅读/重构,到用正则对代码做静态分析,再到抽象出程序库或者框架,都依赖于这种平移对称。除了代码外,系统本身也有对称性。代码或系统的对称性和可维护性通常是正相关的。
一段代码或者系统能够保证的性质越多,也就是越具备秩序。就越给人以“美”感觉。相反,如果自己写出来的代码不能保证秩序,就会给他人甚至自己以“丑”的感觉。没有秩序的代码,也就是混沌代码。不断发现和学习更多的性质,并练习如何在代码里保证这些性质,就是将代码由“丑”,变“美”的过程。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述