`
yanglphf
  • 浏览: 5318 次
社区版块
存档分类
最新评论

对编码、设计中“极简原则”的想法

阅读更多
    早上刚看了博文《对于开发人员,“极简原则”需要修正,请看“新极简原则”》,有一些想法想说说。
    我用了三年的时光维护一个不算简单的系统,窃以为,“极简原则”也好,单一职能原则也好,最根本的目的是为了易读易懂;

极简必要性:
    举个例子,我以前命名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的发生限制在一定范围,但太过追求“能一句代码实现的,就不用两句代码”,那么灾难就会降临,阿门……

    所以,我觉得编码的最根本原则是“易读易懂”。如果写两句能够让人清晰的读懂,没必要非得整合成一句。
    因为“代码是给开发人员看的”,或者更进一步,代码是给系统维护人员看的。
0
1
分享到:
评论
4 楼 windshome 2015-08-01  
就是这篇

对于开发人员,“极简原则”需要修正,请看“新极简原则”
http://windshome.iteye.com/blog/2071957
3 楼 windshome 2015-08-01  
刚发现楼主还引用了我的文章,荣幸荣幸。

而且文中说到的都是非常现实真切的问题,从业十余年,深有同感。

1楼兄弟说的,我不能赞同。那样写可读性没有问题,只是读着别扭而已。二则如果这句出了空指针错误,找都不好找。

并且,有时候表达一个想法用一篇文字,有时候用一段,还有时候用一句话,但是也就有用一个字的时候,怎么更好?应该是根据场景不同,要表达的内容不同而定的。当简明则简明,当详尽则详尽。普适的极简原则是不成立的。

编程就像和人说话一样,像个普通人一样去说就可以了,没必要惜字如金,也不能动辄滔滔不绝,做到好处,就是简繁恰如其份,说实话,还真应该向讲故事的高手们学习学习呢。
2 楼 yanglphf 2014-05-29  
举得例子可能不是很恰当,只是不建议一行写太长,不易读不易理解,特别是处理bug被老板催的跟猴子似的时候……咳,但理由之一,bug涉及范围的扩散是绝对站得住脚的。

至于临时变量……话说java是类引用,所以临时变量没有多的那么夸张,就算是原本的一句话,其实也产生了临时变量。
1 楼 mike.liu 2014-05-28  
我倒是觉得那句所谓“极简过度”的语句没什么问题:
member.setName(StringUtil.filterKeyword(user.getUserName().trim()));
可读性也没问题。至少一眼就能看明白是要设置Name。至于Name是怎么来的,逐步往后看,就能明白。一点也不影响可读性,也不会导致思维中断。
至于后面罗列的理由,也是站不住脚的。你可以尝试把这句拆分,必然引入大量的临时变量。肯定需要看半天才能理解,就是想setName而已。

相关推荐

    GBT7027-2002信息分类和编码的基本原则与方法

    在实际应用中,信息分类和编码不仅应用于文档管理、图书馆目录系统,还广泛应用于数据库设计、知识管理系统、企业资源规划(ERP)等信息化系统中。通过对信息进行科学分类和编码,能够提高信息检索效率,促进信息...

    基于全局性优化的极简光学系统设计.docx

    在本文中,我们将基于全局性优化的思想,设计易于图像复原算法处理的光学传递函数,并对全局优化单透镜和三透镜的光学系统输出模糊图与其复原质量进行分析评价。结果表明,相比于光学输出模糊图,复原图像的对比度、...

    网页课程设计&毕业设计_极简手机PC两用商务旅游企业整站模板5401.zip

    网页课程设计与毕业设计是IT教育领域中常见的重要实践项目,旨在让学生掌握网站开发的全流程,包括需求分析、设计、编码、测试以及部署等环节。本项目提供的"极简手机PC两用商务旅游企业整站模板5401.zip"正是一个...

    异体字编码原则

    异体字编码原则在当代汉字字库设计中扮演着至关重要的角色,特别是在处理和展现传统文化遗产时。Unicode,作为全球通用的字符编码标准,试图收录世界上几乎所有的文字系统,然而它并不可能覆盖所有的汉字变体。尤其...

    信息化系统编码的八项原则.rar

    这八项原则在信息化系统编码中起到指导作用,不仅适用于教育领域,也广泛适用于其他行业的信息系统建设。通过遵循这些原则,我们可以构建出高效、稳定、易于理解和管理的信息系统,提升教育信息化的水平。

    制造行业物料编码管理思路及解决方案极简版V1.0.pdf

    制造行业物料编码管理思路及解决方案极简版V1.0.pdf

    爬虫 极简壁纸 逆向分析 js逆向 交流学习

    当代社会中,极简主义设计作为一种流行趋势,已经深入人们的生活。而极简壁纸作为一种简洁、清新的手机和电脑背景,受到了广大用户的喜爱。然而,对于极简壁纸的逆向分析,我们往往知之甚少。 本文旨在探索极简壁纸...

    五笔极简词库

    通过分析其内容,我们可以深入了解这种极简词库的设计思路及其对用户输入习惯的影响。 #### 二、词库结构与特点 ##### 2.1 结构分析 文档中的内容以特定格式排列,每行由键码(编码)与其对应的词条组成。键码采用...

    物料编码规则指导书,仓储物料编码的基本原则与管理规定.doc

    在该文件中,我们可以看到物料编码规则指导书对物料编码的基本原则和管理规定进行了详细的规定,包括物料编码的流程、编码规则、编码格式等。该文件对物料编码的分类和规则进行了详细的规定,以确保物料的正确编码和...

    ERP编码规则意义与原则

    以物料的编码为主线讲解编码的原则,但所讲编码原则同样适用于系统的客户编码、供货商编码、职员编码、部门编码、单位编码、仓库编码、各种类别编码和其它需要编码的任何项目等。

    编码原则加举例.doc

    编码原则加举例.doc

    极简模式开发工具安装程序v.5.221版

    "极简模式开发工具安装程序v.5.221版"是一款专为快速开发企业信息系统设计的专业软件,它简化了开发流程,让开发者能够更高效地构建个性化系统。这款工具集成了前端开发和后端服务,尤其适用于熟悉Java和Javascript...

    哈夫曼编码压缩解压缩软件课程设计报告

    5. **软件设计**:按照软件工程的原则,进行模块化设计,可能包括输入输出模块、编码模块、解码模块等。 6. **测试与调试**:设计测试数据,验证软件的正确性和效率,确保在不同频率分布的输入下都能得到预期的结果...

    PHP编码规范与原则

    PHP编码规范与原则 本规范由编程原则组成,融合并提炼了开发人员长时间积累下来的成熟经验,意在帮助形成良好一致的编程风格。

    软件编码原则分享.pdf

    5. 避免冗余原则:在设计和编码时要避免创建冗余的功能和模块。例如,如果一个功能可以通过现有的代码库来实现,就不需要重新开发。 6. 单一职责原则:每个类、模块或函数应该只有一个改变的理由,即每个单一的组件...

    磁编码器原理图和PCB图

    在本资料中,我们探讨的是磁编码器的原理图和PCB设计,这对于理解和应用这种技术至关重要。 磁编码器的工作原理基于磁场的变化。它通常包含一个磁性轮,上面有不均匀分布的磁性区域,以及一个检测这些磁场变化的...

    编码原则说明

    在推行信息化系统的工作中,所遇到的第一件事情就是编码工作,如供应商、客户、物料等都需要编码,在企业信息化的发展过程中,经常会发现当初制定的编码规则有问题,无法再编下去,需重新修订。那如何进行科学、有效...

    海关商品归类HS编码原则和方法学习教案.pptx

    每个商品都可以被分配到一个特定的HS编码中,该编码由6位数字组成。前两位数字表示章,第三位数字表示品目,第四位数字表示子目,最后两位数字表示tariff项。 HS编码的应用非常广泛,如海关申报、统计、税收、贸易...

    Huffman 编码器与解码器-----数据结构课程设计(C++源码和报告)

    在数据结构课程设计中,Huffman编码器和解码器的实现通常包括以下几个关键步骤: 1. **字符频度统计**:首先,需要读取字符文件并统计每个字符出现的次数。这可以通过遍历文件并使用哈希表或数组来记录每个字符的...

Global site tag (gtag.js) - Google Analytics