专栏首页Java学习网如何编写出优秀软件

如何编写出优秀软件

如何编写出优秀软件

  软件必须是自由的   优秀软件是自由软件。我将避免使用“开源”,因为它根本没有包含社会层面,它和技术本身同等重要。你可以从这里了解更多。   广泛被接受的工具和语言   编写优秀软件的语言是被广泛使用的,这使得有人能够阅读和修改代码。优秀的语言,比如C、Python和Java。当然也有例外,一些较少被使用的语言是更好的选择。   保持简单   优秀软件不做不必要的事情。换句话说,没有不必要的功能。实现没人使用的功能只会产生bug。设计软件时,保持简单应该作为最高优先级。正如爱因斯坦说的“让事情尽可能简单,而不是比较简单。”   太多抽象是糟糕的。如果你把代码隐藏在多层抽象之后,你也隐藏了bug。太多的抽象让代码难以理解,难以跟踪执行路径和debug。它也会降低性能。抽象之上的抽象经常可以在Java编写的企业软件中看到。优秀软件可以用Java编写,但是Java也让编写恐怖的、结构复杂代码变得非常容易。C++也是如此。   不要弄成火箭科学   使用具有真正意义的变量名。不要使用单字符变量名。它们几乎不可能理解和追踪。也有单字符的变量名,它们是被普遍接受了。例如对于坐标,用x和y就行。对于循环,就使用i,j等等。除此之外,不要这样使用了。通常地,对于优秀软件,代码的结构是清晰的,还有可查的、记录下来的代码风格。   文档是重要的   不管文档是多么地让人厌烦,优秀软件也是有文档的。代码有清晰的注释,软件有随之一起安装的手册。对于web应用程序,让文档可以在线上访问到。   开发者经常认为,当软件被完成后再去写文档,就足够了。那是完全错误的方式。文档必须是开发人员在开发软件过程中的一件事情。文档必须是开发的一部分,而不是代码被写完之后的工作。   使用版本控制系统   优秀软件使用版本控制系统,一直都用。如今我差不多总是推荐Git做版本控制,但是有一些情况,SVN之类的系统就可以做得很好了。版本控制容易回滚到可能有问题的修改。考虑下面的例子,如果没有版本控制系统,该怎么办: 开发者A修改了文件program.c,该文件被拷贝到了源码树(source tree),旧文件被替换了。后来发现了一个bug,问题出在开发者A对program.c所做的修改。开发者B、C等人费了好大劲儿才搞清楚开发者A修改了什么。如果有版本控制系统,这就不是问题了。当然聪明的开发组应该有备份的,因此在这种情况下,他们将找到修改前的原始备份,使用diff工具看看修改了什么地方。然而,既花时间、又麻烦。更不要提从备份拷贝并替换文件是多么地容易出错了。   扩展性   扩展性不是严格意义上的强制项,不过它经常让软件更加有用。开发软件、便于让它能够与其它软件一起被使用,是一种优秀的方式。事实上,这是Unix主要设计原则之一。   例子   互联网充满了编写良好的软件。很多标准的Unix工具编写良好,然而有些就不是。一个写得不错的例子是Memo,这是我写的软件。

本文分享自微信公众号 - Java学习网(javalearns),作者:javas

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-05-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 软件开发不能用盖房子来比喻

    多年以来,软件行业一直在使用一种类比,即以建筑行业来做参考和比喻。这种比较在软件语言里随处可见,比如架构(architecture)、地基(foundation...

    用户1289394
  • 别怪程序员——都是项目经理的错

    别怪程序员——都是项目经理的错 现在有很多糟糕的软件。不可靠,不稳定,不安全,不可用。这些软件是如此糟糕,以致于有些人要求监管软件开发和限制专业软件开发人员为“...

    用户1289394
  • 程序员既要写好代码,又要写好文档

    程序员既要写好代码,又要写好文档 作为一个长期混迹于CSDN社区的人,我对很多拥有高访问量的博主钦佩不已,特别是在参加了CSDN在举办“2014 CSDN博文大...

    用户1289394
  • 梅宏院士:软件定义的未来,万物皆可互联,一切均可编程

    大数据文摘
  • 云计算把天变了 软件供应商怎能不变?

    所谓互联网的发展离不开软件和硬件两方面的技术进步。而软件供应商相比硬件供应商来讲其生存困难度一直要更为困难,软件供应商不仅要考虑用户需求什么,还要了解竞争对手的...

    静一
  • 独家 | 建立软件的经济学分析框架,浅议开源软件的经济学特性(附图解)

    人类社会正在加速数字化。一个显而易见的事实是,人们生活、工作的方方面面都离不开各种各样的软件。不久以前,人们还不知道什么是软件;从今往后,软件正在吞噬整个世界[...

    数据派THU
  • 为什么一些优秀的java框架都是外国人写的,为什么国内的程序员大部分只会搬砖?

    作为一个写了十几年代码的程序员,平时用的比较多的有三种编程语言,C/C++ java,相对来讲C/C++爱的更加深刻一点,国内普遍一个现象拿到的源码基本上都是国...

    程序员互动联盟
  • win10 uwp 隐私声明

    垃圾微软要求几乎每个应用都要有隐私声明,当然如果你不拿用户信息的话,那么用户声明是一个URL,我们应该把应用声明放在哪?

    林德熙
  • 软件正吃掉世界:2016~2020软件开支CAGR为6.9%| 报告

    报告前瞻: 在不同时代下不同的软件交付模式,全球软件行业收益在不断增长。 从2009年起,云计算或软件概念股成功上市的在2014年达到最高点,总值达28.17...

    人称T客
  • 和西安创业型软件公司侃侃机遇与出路的问题

    在西安软件互联网圈子内,你会发现存在着很多创业型软件公司在苦苦地经营着,有的不断壮大有的也在不断衰弱。但是随着中小型企业对软件及信息技术重视程度的提高,西安创业...

    西安弈聪软件公司

扫码关注云+社区

领取腾讯云代金券