文档章节

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

 流浪的棋子
发布于 2014/05/29 17:37
字数 536
阅读 18
收藏 0

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

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

所以,我觉得编码的最根本原则是“易读易懂”。如果写两句能够让人清晰的读懂,没必要非得整合成一句。 
因为“代码是给开发人员看的”,或者更进一步,代码是给系统维护人员看的。

© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 3
码字总数 1542
作品 0
房山
程序员
简约设计中的规律—形式(三)

设计中的应用规律 功能性的应用规律 -- 所谓功能性原则是指设计时要考虑作品应该具有的效用和要传达的设计目的,功能性原则其实也就是目的性原则。当设计忽略了对功能的考虑,只是盲目追求个...

博为峰教研组
2016/11/16
10
0
谷歌 I/O 大会今年将强调设计

谷歌在本周二公布了今年Google I/O开发者大会的主题。按照谷歌开发者关系总监比利·拉特里奇(Billy Rutledge)的说法,本次大会将强调设计、开发与渠道。今年的Google I/O大会注册截至日期为...

oschina
2014/04/18
3.7K
17
简约设计中的规律—色彩(一)

在视觉设计中,承载一种特别的视觉语言,它的特殊性就在于它的“极简性”,即在设计中,采用某种极端的方式来刻意强调甚至是有意地夸张,表现出明显的视觉语言元素特征,形成别具一格的效果。...

博为峰教研组
2016/11/10
1
0
ThinkPHP/thinkphp

简介 ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞...

ThinkPHP
2013/09/17
0
0
极简的Restful框架推荐->Resty(服务端+客户端)

源码链接:OSC -> Resty Github -> Resty 在线开发手册 如果你还不是很了解restful,或者认为restful只是一种规范不具有实际意义,推荐一篇osc两年前的文章:RESTful API 设计最佳实践 和 In...

Dreampie
2015/01/08
0
67

没有更多内容

加载失败,请刷新页面

加载更多

00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
2
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
117
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
4
0
我为什么用GO语言来做区块链?

Go语言现在常常被用来做去中心化系统(decentralised system)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。 我们在决定做Karachain的时候,考量(b...

HiBlock
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部