1. 聚能聊>
  2. 话题详情

代码整洁之道:你的代码是否足够优雅、整洁、易懂?

普通的工程师堆砌代码,优秀的工程师优雅代码,卓越的工程师简化代码。如何写出优雅整洁易懂的代码是一门学问,也是软件工程实践里重要的一环。下面从注释、命名、方法,并发等视角简单给出了部分最佳实践。相信每一个优秀的工程师都有一颗追求卓越代码的心。

注释
不要给不好的名字加注释,一个好的名字比好的注释更重要
不要“拐杖注释”,好代码 > 坏代码 + 好注释
在文件/类级别使用全局注释来解释所有部分如何工作
一定要给常量加注释
团队统一定义标记
TODO 待处理的问题
FIXME 已知有问题的代码
HACK 不得不采用的粗糙的解决方案

命名
尽可能使用标准命名方法,比如设计模式,通用学术名词等
命名要找更有表现力的词
使用更专业的词,比如不用get而使用fetch或者download
避免空泛的名字,像tmp
使用具体的名字来细致的描述事物
给变量名带上重要的细节,比如加上单位ms等
为作用域大的名字采用更长的名字,作用域小的使用短名字
变量类型为布尔值表达加上is,has,can,should这样的词会更明确

image

方法
函数不应该有100行那么长,20行封顶最好
if else while等控制语句其中代码块应该只有一行,也就是一个函数调用语句
函数的锁进层次不应该多于两层
一个函数只做一件事,一个函数不应该能抽象出另外一个函数
某个公共函数调用的私有函数紧随其后
最理想的参数是零参数,最长不要超过三个入参,尽量不要输出参数
如果函数传入三个及以上参数最好将其抽象为类
标识参数十分丑陋,向函数传入布尔值用于区分不同业务的做法很丑陋,应该拆分为多个函数

异常与错误
抽离try catch包含的代码块,其中代码块抽象为一个函数
抛出的每个异常,都应当提供足够的环境说明,已便判断错误的来源与处所
不要将系统错误归咎于偶然事件

并发
分离并发相关代码与其它代码
严格限制对可能被共享的数据的访问
避免使用一个共享对象的多个同步方法
保持同步区域微小,尽可能少设计临界区

一起来讨论下:
1、在代码整洁工程实践上你有哪些好的建议?

2、数百人协作开发的代码如何保证代码整洁一致性?

3、你的代码属于哪一种境界?是否会去追寻代码整洁之道?

参与话题

奖品区域 活动规则 已 结束

  • 奖品一

    淘公仔 x 2

  • 奖品二

    阿里云代金券 x 5

  • 奖品三

    云栖定制电脑包 x 2

9个回答

2

黄二刀 已获得阿里云代金券 复制链接去分享

1、在代码整洁工程实践上你有哪些好的建议?
用Java的话,装个Alibaba Java Coding Guidelines,一劳永逸。
2、数百人协作开发的代码如何保证代码整洁一致性?
公司内部要形成一套完善的工作机制和编码标准。
3、你的代码属于哪一种境界?是否会去追寻代码整洁之道?
我的编码处于初级阶段。当然会寻求代码整洁,自己写的代码不仅要让自己看懂,也要让别人看懂,对自己负责,也对别人负责。

1

kissjz 已获得云栖定制电脑包 复制链接去分享

1、在代码整洁工程实践上你有哪些好的建议?
刚才也有人提到了,在idea或者eclipse上装上阿里那个代码规范的插件,工程就规范很多了。

2、数百人协作开发的代码如何保证代码整洁一致性?
这本《阿里巴巴Java开发手册》不错,可以团队照着这个来统一一下Java代码的规范。
当然,如果是其他语言,那就要辛苦点了,团队最好自己出一本这样的规范,给现在团队
成员看,也给之后来的新员工看,这样有个好处——哪怕团队的leader离职了,新换上来的leader
也不需要在费心统一团队代码规范这件事,因为整个团队已经有了一本规范。
我觉得能这样做是很好的,一个团队代码规范不同真的很蛋疼,彼此可能都觉得对方应该按照自己的规范来干!

3、你的代码属于哪一种境界?是否会去追寻代码整洁之道?
写代码还没两年,但是已经感受到了代码规范的重要,比如你看别人代码吧,同样是Java,就能看的一头雾水,花括号省略的,然后还用什么三元运算符,还有变量等命名,这个能把你坑死(可能自己后来看以前自己写得代码都一头雾水,想骂自己)!所以,虽然刚写代码,但会在命名每一个类和方法的时候去注意,写代码,在看完《阿里巴巴Java开发手册》之后就按照那个手册上的来,自己写代码也很优雅了,然后也方便和别人讨论交流。
我觉得代码规范整洁,就像小学老师一直要求练字一样,代码写规范了,是一个一劳永逸的事情。

1

微wx笑 已获得阿里云代金券 复制链接去分享

1、在代码整洁工程实践上你有哪些好的建议?
代码整洁不代表可读性高吧,不代表性能好吧,不代表没Bug吧。
编程规范很重要,低级错误不能犯。
阿里官方Java代码规范标准《阿里巴巴Java开发手册》不错。

2、数百人协作开发的代码如何保证代码整洁一致性?
立规范,行规范,守规范

3、你的代码属于哪一种境界?是否会去追寻代码整洁之道?
快捷键境界,随时快捷键格式化代码。

0

wangccsy 已获得淘公仔 复制链接去分享

1、在代码整洁工程实践上你有哪些好的建议?
任何一个公司,或者说任何一个项目部(组),都会有自己的编码规范,如果真的能严格按照编码规范来编写代码,我觉得这样会写出一个整洁的代码。这样的话即使有人员的变动也不会造成太大的影响。但真正能够按照编码规范写代码的人又能有几许人呢?不规范的代码只能让接手代码的人头疼,想重写。代码中的日志,一定要有明确的含义,如果仅仅写一个Begin,End的话真的是没什么用处。只能证明代码执行了。

2、数百人协作开发的代码如何保证代码整洁一致性?
我觉得这点应该借鉴一下GitHub,开源项目的规范,开源代码是如何保持代码的整洁性与可维护性的,能够让分布在世界各地的,从来没见过面的程序员们通过代码交流的呢。

3、你的代码属于哪一种境界?是否会去追寻代码整洁之道?
中庸吧。不能说是最好的,但肯定不是最差的。尽量做到一个月两个月后看自己的代码还能明白当初为什么要这么编写。

0

海阔天空yy 已获得阿里云代金券 复制链接去分享

1、在代码整洁工程实践上你有哪些好的建议?
eclipse多用代码格式化的功能
2、数百人协作开发的代码如何保证代码整洁一致性?
主要应该还是标准,最基本的要求,代码入库前一定要格式化,
还有就是减少冗余的设计,简单能实现的就不要搞得太复杂
3、你的代码属于哪一种境界?是否会去追寻代码整洁之道?
只是用开发工具的格式化功能格式化罢了,还要就是按照阿里的开发规范那样

0

无访问权限 已获得阿里云代金券 复制链接去分享

1、在代码整洁工程实践上你有哪些好的建议?
给自己制定一个标准,或者遵循行业内的标准,不要顺便即兴发挥。
注释要及时加,在debug时如果遇到乱改后解决问题的情况不能就此作罢,尽管时间紧迫也要提交后继续找出原因并及时添加注释。

2、数百人协作开发的代码如何保证代码整洁一致性?
制定团队间的标准,让大家按照这个标准开发。

3、你的代码属于哪一种境界?是否会去追寻代码整洁之道?
目前我的代码整洁度能满足自己的要求,而代码整洁之道的追寻我会放在提升自身能力以后进行。

0

aoteman675 已获得淘公仔 复制链接去分享

1、在代码整洁工程实践上你有哪些好的建议?
首先可读性要好,逻辑清晰,代码注释文档规范,函数封装。代码首先是机器运行的,效率和安全都是第一位,所以要在bug最低情况下把代码书写整洁,因为bug还不是需要阅读和测试解决的。《阿里巴巴Android开发手册》和《阿里巴巴Java开发手册》不错,书写规范还有IDE插件支持,内存分析和漏洞扫描。

2、数百人协作开发的代码如何保证代码整洁一致性?
数百人那是庞大的工程了,可能每个人都是其中的一颗螺丝钉,尺寸和型号都必须用高精度才能吻合,所以协同开发就要立规范,定上层API,分模块,模块对接规范协议。就像公司一样,几百号人分为若干部门,各个部门直接通过内部OA工作流协调工作,这也是项目模块之间的沟通机制。然后公司的稳定运行靠公司规章制度强制执行,才不会出现部门掐架,信息不流畅,偶然性的出现bug等情况。所以一套之上而下的规范非常重要。

3、你的代码属于哪一种境界?是否会去追寻代码整洁之道?
易写,看得懂。工工整整。现在的IDE都很智能,各种插件用起来还是挺爽的,性能检测,方法校验,最后就是颜值了。

0

沙漠的热情 已获得阿里云代金券 复制链接去分享

1、在代码整洁工程实践上你有哪些好的建议?
建议团队成员读读吴军博士的书,了解一下什么是工程师的五级划分,想必大家就知道怎么做了。

2、数百人协作开发的代码如何保证代码整洁一致性?
唯有一途,团队里需要“孤尽”这样的人。

3、你的代码属于哪一种境界?是否会去追寻代码整洁之道?
境界一词似乎太高大上了,我估计够不上,只是在实用的水平。
简洁规范还是可以有的,优雅谈不上。

0

大唐小康 复制链接去分享

从汇编到C,在C待了太长时间了,现在java的紧凑格式完全不适合我了,强制改成C的风格。哈哈