对编码、设计中“极简原则”的想法
2014-05-29 00:00
211 查看
摘要: 极简原则,维护系统,易读易懂,编码
早上刚看了博文《对于开发人员,“极简原则”需要修正,请看“新极简原则”》,有一些想法想说说。
我用了三年的时光维护一个不算简单的系统,窃以为,“极简原则”也好,单一职能原则也好,最根本的目的是为了易读易懂;
极简必要性:
举个例子,我以前命名API,务求全面详实,希望用户看到方法名,就理解其功能、特点、参数类型、返回值;但结果是名称冗长,不易阅读。
如:Member getMemberInfoByMemberno(String id)
当隔段时间再来看,连我自己都被长长的命名弄得烦躁不安,不想去细看。所以长命名并没有达到预期效果。
实际上,这个接口充分利用已存在返回值和形参名,就可以精简很多。
如:Member getInfo(String memberno);
极简过度:
举个过去追求极简,一句话包含无数信息的例子,
member.setName(StringUtil.filterKeyword(user.getUserName().trim()));
不管你信不信,反正我看了这句话有想吐的冲动;如果不巧要调试这句话,那么我肯定骂娘。
这一句包含的信息量太大,如果出bug,那么就需要细致定位,是user==null,还是user.getUserName() == null,或者StringUtil.filterKeyword写错了,或member.setName没有生效。
系统设计里定义模块的目的之一,就是将bug的发生限制在一定范围,但太过追求“能一句代码实现的,就不用两句代码”,那么灾难就会降临,阿门……
早上刚看了博文《对于开发人员,“极简原则”需要修正,请看“新极简原则”》,有一些想法想说说。
我用了三年的时光维护一个不算简单的系统,窃以为,“极简原则”也好,单一职能原则也好,最根本的目的是为了易读易懂;
极简必要性:
举个例子,我以前命名API,务求全面详实,希望用户看到方法名,就理解其功能、特点、参数类型、返回值;但结果是名称冗长,不易阅读。
如:Member getMemberInfoByMemberno(String id)
当隔段时间再来看,连我自己都被长长的命名弄得烦躁不安,不想去细看。所以长命名并没有达到预期效果。
实际上,这个接口充分利用已存在返回值和形参名,就可以精简很多。
如:Member getInfo(String memberno);
再举个例子,同样是获取邮件模板的ServletApi: /email/getEmailTempliteByTitle.do /email/getModel.do 在有前缀/email的情况下,后面的方法名没必要再说明是获取email模板。
极简过度:
举个过去追求极简,一句话包含无数信息的例子,
member.setName(StringUtil.filterKeyword(user.getUserName().trim()));
不管你信不信,反正我看了这句话有想吐的冲动;如果不巧要调试这句话,那么我肯定骂娘。
这一句包含的信息量太大,如果出bug,那么就需要细致定位,是user==null,还是user.getUserName() == null,或者StringUtil.filterKeyword写错了,或member.setName没有生效。
系统设计里定义模块的目的之一,就是将bug的发生限制在一定范围,但太过追求“能一句代码实现的,就不用两句代码”,那么灾难就会降临,阿门……
所以,我觉得编码的最根本原则是“易读易懂”。如果写两句能够让人清晰的读懂,没必要非得整合成一句。 因为“代码是给开发人员看的”,或者更进一步,代码是给系统维护人员看的。
相关文章推荐
- 开发培训体会——写好代码的一些编码规则和设计原则
- X86指令编码内幕 --- ModRM 与 SIB 设计上的 2 个原则
- [转]编码设计中的几个原则
- 设计模式总结—编码原则
- Android项目流程、设计原则、编码规范、技术特点和过时技术
- 游戏中的设计模式与编码原则
- 编码设计中的几个原则zz
- 面向对象七大编码设计原则
- 十大安全设计原则与安全编码原则
- 开发培训体会——写好代码的一些编码规则和设计原则
- Spun从苹果学习到的6大极简设计原则
- Atititi ui之道 attilax著 v3 s11.docx 1. 概览 2 1.1. 软件设计可分为两个部分:编码设计与UI设计 2 2. 用户界面设计的三大原则是:置界面于用户的控制之下;
- 面向对象的设计原则
- 对架构设计的想法
- 应用程序设计/命名及编码规范方案
- 面向对象的设计原则(整理于敏捷开发)
- 面向对象设计原则
- 面向对象的设计原则(2):OCP
- 面向对象的设计原则(整理于敏捷开发)
- 面向对象设计原则