阅读更多

6顶
0踩

非技术
在我先前的博客中,我主要讲了我们的编码风格应该适应我们所处的业务领域。即不同的业务领域需要不同编码风格的软件。例如,为防御体系写的软件必须强健稳定,因为一次崩溃可能就会终结它的生命周期,而为市场交易写的软件,则必须可维护,并且还可以添加广告,通常这些项目和软件的生命周期都非常短,所以这些软件还必须可以重复使用。



虽然我之前从没看到过它被应用于这些业务领域,但是关于编码优先顺序这一观点却并不是最近才出来的。我第一次看到这一观点是在Steve Maguire写的一本由微软出版社于1997年出版的书上,书名叫做《Debugging the Development Process》。

在这本书中,Steve论述了关于在编写软件时,我们应该建立优先顺序的观点。他列举的他认为需要考虑的优先事项包括:
  • 规模
  • 速度
  • 稳健性
  • 安全性
  • 可测试性
  • 可维护性
  • 简单
  • 可重用性
  • 可移植性

现在说说那个时候的背景——1997年,那时的CD-RW驱动器和媒介刚问世,内存还很昂贵,处理器还很慢,语种选择还是C / C++。

随着时间的推移,现在的Java程序员通常毋需再考虑规模和速度,所以上面的列表可以缩减为:
  • 安全性
  • 可测试性
  • 稳健性
  • 可维护性
  • 简单
  • 可重用性

下面我们要讨论的是上面这个列表是否还适用于今天,具体为……
1.安全性

虽然写着的是“安全性”,但是Steve真正想说的是编程范例和算法。有些技术是比其他的要来得更安全,例如,使用查表返回值比使用逻辑驱动来计算数值要安全。我们设计时也需要考虑到安全性这一特点。

2.可测试性和稳健性

对我来说,这两者差不多。从定义上讲,经过充分测试的代码就会比较稳健。如果你正在使用测试驱动开发(TDD),那么你也可以将这一条从列表中删除,这是因为它们在此进程中是固有的。如果你是不喜欢使用TDD的程序员大军中的一员,那么这一条应该保留……

3.可维护性

这一条可以反映出一个人的代码风格、思维条理和清楚表达自己的能力。在风格方面,大家可以借鉴Uncle Bob在《Clean Code>中的描述,这也是我最喜欢的书籍之一。Uncle Bob的风格……怎么说呢,整体感觉就是干净。方法和类都很短,服从SRP和整洁的布局。这也是优秀软件的关键属性。

4.简单

代码简单是我们共同的目标追求,但是这并不意味着写出来的代码是被过分简化的,我们只需要做到,代码虽然最简化,没有装饰、没有镀金,也不具备以后可能需要添加的功能,但是依然可以完成工作。这种最简化代码的观点已然成为了敏捷社区的核心思想,甚至Shane Warden和James Shore也在他们的《The Art of Agile Development》一书中,花费了一整章的篇幅来描述这一观点,包括它的概念,如“once and only once”以及“you ain’t gonna need it”。

5.可重用性

这一点我就不多说了,我们总是希望现在写的代码以后还可以再次使用,省时省力。

综上所述

首先,自1997年以来,很多事情都发生了变化,这是毋庸置疑的。但是在我看来,一些好的观点依然值得我们学习和借鉴……
  • 大小: 32.2 KB
来自: 码农网
6
0
评论 共 4 条 请登录后发表评论
4 楼 alixjiang 2015-01-28 14:01
我倒认为,除了上面那些,现在对企业而言,用户体验是至关重要的一环,程序的速度直接影响着用户体验了
3 楼 alixjiang 2015-01-28 13:59
现在的JAVA程序员通常不需要考虑速度?那搞那么性能优化做什么?
2 楼 fm395728572 2015-01-28 11:07
时间与优雅程度是挂钩的,时间不允许,你优雅作甚
1 楼 2007202070 2015-01-23 14:04
   

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 手机模拟器1--MidpX1.3

    手机模拟器1--MidpX1.3,找了很久才找到的

  • JAVA模拟器_MidpX J2ME Emulators Package

    JAVA模拟器_MidpX J2ME Emulators Package 这是最近才发现的一个JAVA模拟器,才不到2MB,比起MOTO SDK来说要小巧很多.而且更方便的是,安装完此软件之后,JAR文件就会关联到这个模拟器软件了,双击你想预览的JAVA程序(游戏,软件,电子书等等)就可以在电脑上看到运行效果了.是不是很不错呢? 真的很不错,下了一定要顶啊!!! ...

  • 优秀代码所具备的品质

    安全性 可测试性 稳健性 可维护性 简单 可重用性 转载于:https://www.cnblogs.com/jking10/p/4248078.html

  • 程序员如何写出一手漂亮的代码?

    如果为了节省几微秒的时间而使你的程序陷入无望的复杂性,那很好,但那将是任何人对它进行的最后一次优化。...选择正确的名称,按照逻辑组织代码,每行代码只表达一个想法,日积月累你的代码就会易于阅读,且易于使用。

  • 从哪些维度评判代码质量的好坏?如何具备写出高质量代码的能力?

    这些几乎涵盖我们所能听到的描述代码质量的所有常用词汇,你可以看一看。看到如此多的描述词,你可能要问了,我们到底该用哪些词来描述一段代码的质量呢?实际上,我们很难通过其中的某个或者某几个词汇来

  • 优秀工程师应该具备哪些素质_创业团队里优秀工程师需要具备哪些素质?

    我曾为创业公司面试过很多工程师,他们中有些人在 Google 这种大公司中拥有丰富的工作经验,但他们并不适合创业公司。不能说他们没能力,但他们在创业公司中表现得确实并不那么出类拔萃。在多年的工作中,我发现的确...

  • 腾讯 Code Review 规范出炉!你还敢乱写代码??

    来源:腾讯技术工程前言作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论。发现不少同学 code review 与写出好代码的...

  • 如何把代码写的更优雅,你需要这一份代码精进书单!

    加个“星标”,每天带你读好书! 黄小斜写了一年多的代码,渐渐地代码量也上来了,但是,代码写的多就是好吗,简单的数量堆积似乎并不能起到太好的效果,毕竟我们CRUD写多了,也不怎么需要架构设计,甚至连个...

  • 软件测试师具备的素质_一名优秀的测试人员应该具备哪些素质?

    对于软件测试人员来说需要具备的素质,我觉得首先最重要的是要有一定的理论知识和测试技能,这是测试工作的基础。那么我们测试人员还应该具备哪些素质才能在工作当中被不断的认可呢?一名优秀的测试人员应该具有的...

  • 什么是优秀代码之我见

    一个偶然机会自己参加一个面试,问到什么是优秀代码?针对这个问题我的回答给出两条:可读性和可继承性。...但是通过我反复查找资料可以总结如下,优秀代码需要具备如下特征:   1. 满足基本需求。再...

  • 腾讯 Code Review 规范出炉,你还敢乱写代码?

    前言 作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论。发现不少同学 code review 与写出好代码的水平有待提高。在这里,想分享一下我的一些...设计理念你可能道听途说了一

  • 一文说透低代码平台/无代码平台

    为了提高企业的适应能力,以便迅速有效地满足市场需求,为企业内外部快速开发满足业务和市场需求的软件解决方案,在历经最底层的汇编、高级语言、更高效率的编程框架(如 Spring 框架、大前端框架等)后,计算机科学...

  • 优秀的项目经理需要具备哪些品质?

    5、一个能擅长学习、记录、思考、总结和分享的项目经理一定很优秀。 著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:李小翀 链接:...

  • 查看进程信息,方便排查问题

    查看进程信息,方便排查问题

  • IDA Pro分析STM32F1xx插件

    IDA Pro分析STM32F1xx插件

  • 基于SSH的线上医疗报销系统.zip-毕设&课设&实训&大作业&竞赛&项目

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

  • matlab的小型的微电网仿真模型文件

    小型的微电网仿真模型,简单模拟了光伏,家庭负载变化的使用情况

  • MATLAB代码实现:分布式电源接入对配电网运行影响深度分析与评估,MATLAB代码分析:分布式电源接入对配电网运行影响评估,MATLAB代码:分布式电源接入对配电网影响分析 关键词:分布式电源 配电

    MATLAB代码实现:分布式电源接入对配电网运行影响深度分析与评估,MATLAB代码分析:分布式电源接入对配电网运行影响评估,MATLAB代码:分布式电源接入对配电网影响分析 关键词:分布式电源 配电网 评估 参考文档:《自写文档,联系我看》参考选址定容模型部分; 仿真平台:MATLAB 主要内容:代码主要做的是分布式电源接入场景下对配电网运行影响的分析,其中,可以自己设置分布式电源接入配电网的位置,接入配电网的有功功率以及无功功率的大小,通过牛顿拉夫逊法求解分布式电源接入后的电网潮流,从而评价分布式电源接入前后的电压、线路潮流等参数是否发生变化,评估配电网的运行方式。 代码非常精品,是研究含分布式电源接入的电网潮流计算的必备程序 ,分布式电源; 配电网; 接入影响分析; 潮流计算; 牛顿拉夫逊法; 电压评估; 必备程序。,基于MATLAB的分布式电源对配电网影响评估系统

Global site tag (gtag.js) - Google Analytics