我们的终极编码规范
我们的终极编码规范,最重要的只有3点:
- 每一个文件不能超过300行代码,最好不超过200行;
- 每一个方法不能超过30行代码;
- 不写一行注释。
这3点看上去很简单,但是很多人做不到,即使是多年工作经验的。我们提出这3点,有很多人不相信做得到,或者认为即使做到实际意义也不大。事实是,我们多个项目成功做到了这3点,我们的团队深刻体会到了写代码的优雅、写代码的艺术。
这3点应该在所有项目中遵守,不管是c#,还是js、HTML、java,都应该尽可能达到。
除了这3点,还有其他几点可供参考:
- 每一个文件夹不能超过30个文件和子文件夹,对于架构而言;
- 业务相关的代码一定要放到一起;
- 尽可能降低各个类的耦合度;
- 写任何代码,当性能不是问题的时候,都应该把代码写的更易读。
命名指导:
对于日期和时间的命名。如果存的值只是日期,那么以Date结尾;如果值是时间,那么以Time结尾。如:CreatedDate代表这条记录的创建日期,不包含时间;CreatedTime代表这条记录的创建时间,包含日期和时间。
命名要准确,不可模糊。不能因为命名太长而选择有歧义或模糊意义的命名。比如以前项目中的一个案例:数据库中有一个“Recipe(菜)”表,做这个菜的时间包含:PrepareTime, CookTime, OvenTime, CleanTime。这里的命名有问题,因为调用者不知道这里Time是存的秒还是分还是带小数的小时,于是改成:PrepareMinutes, CookMinutes, OvenMinutes, CleanMinutes。另一个常见例子是,单词“interval”用作命名的时候,调用者也不清楚是分钟还是毫秒,于是后面都要加单位。
Bool类型返回值的方法,除了is做前缀外,还有can, will, does, has, should。以前在项目中看到一个方法,叫IsReceiveMessage,我在想是不是IsReceivingMessage,因为很多国内程序员英语语法不好,但后面我看到注释才发现,这个方法实际上是判断用户是否能收到短信,也就是说这个方法应该叫CanReceiveMessage。我相信写这个方法的程序员,写完这个方法命名时,肯定自己读着也感觉不太懂,所以加了个注释。实际上所有加注释的地方,要么命名不准确,要么方法太长。一旦你发现自己在写注释,那么你就需要思考这2个问题了。
未完待续,本帖长期更新中...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)