编程百晓生 | 世上竟有如此优雅的代码!
05
世上竟有如此优雅的代码!
鱼小皮
哥,我好难过。
怎么肥四?
老百
鱼小皮
这不是刚换了一家实习公司么,这家公司要求每次提交代码都要其他同事来审核。
哦,你说的是 CR(code review 代码审查)呀,一般新人的代码都会让老员工看一看,保证没问题才能发布。
老百
鱼小皮
对,但是我发现同事们都不爱看我的代码,导致我的代码一直无法发布。
还有这种事?我来看看你的代码。
老百
小皮呀,我知道为什么他们不想看你的代码了,你有问题!
老百
鱼小皮
我不对劲?
来来来,你看看,这特喵写的都是啥啊?
老百
代码鉴赏大会
01 小东西长得真别致
代码如下:
public static void main(String args[])
{
if ( 1== 1) {
System.out.println( "我好帅");
} else
{
System.out.println("我不帅" );
} System.out.println( "hello world" );}
鱼小皮
这是我在公司写的的第一段代码,有啥问题?
第一次能写出这样的代码真是太强了,你看看,这代码格式错落有致、风格迥异,逻辑还有毛病,应该把 “我好帅” 改成 “小东西长得真别致”。
老百
02 飞机场
代码如下:
public class ilovecodeandplayandsleep() {
final int howmanyhourscanisleep = 24;
}
鱼小皮
这段代码怎么了,是我英文单词拼错了么?
你的英语很好,但是这么平平平平平平平平平平平的代码我还是第一次见,你键盘上的大写键坏掉了么?
老百
03 创 作 鬼 才
代码如下:
public class To🐑2Simple {
int user年龄;
String user资产;
String user的🐶;
}
鱼小皮
这段代码运行的老好了,没毛病吧?
小皮,你 真 是 创 作 鬼 才!变量名带上中文就算了,还能加表情?
老百
04 大碗宽面
代码如下:
public class Noodle {
private static final String description = "xxxxxxx" + 1/1 + "yyyyyy" + 2/2 + "zzzzzz" + "zzzzzz" + "zzzzzzz" + String.format("%s %s %s %s %s %s %s %s", "1", "2", "3", "4", "5", "6", "7", "8") + "goodgoodgood" + "hhhhhhhhhhhhhhhhhhhhh233333333333";
}
鱼小皮
这行代码没毛病啊,就是定义一个字符串变量而已。
小皮,你的换行键是不是也坏了?你看这行代码它又长又宽~
老百
05 撒哈拉沙漠
代码如下:
protected final boolean tryAcquire(int acquires) {
return nonfairTryAcquire(acquires);
}
final boolean nonfairTryAcquire(int acquires) {
final Thread current = Thread.currentThread();
int c = getState();
if (c == 0) {
if (compareAndSetState(0, acquires)) {
setExclusiveOwnerThread(current);
return true;
}
}
else if (current == getExclusiveOwnerThread()) {
int nextc = c + acquires;
if (nextc < 0)
throw new Error("Maximum lock count exceeded");
setState(nextc);
return true;
}
return false;
}
鱼小皮
这段代码怎么了?花了好久写出来的干货啊!
是挺干,简直比撒哈拉沙漠还干。加上一行注释有这么难么?
老百
06 珠穆朗玛峰
代码如下:
public static void main(String[] args) {
int a = 1;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;
a++;a++;a++;
a++;
a++;
a++;
a++;a++;a++;
a++;a++;a++;a++;
a++;a++;a++;a++;
a++;a++;a++;a++;a++;
a++;
a++;a++;a++;
a++;a++;a++;a++;
a++;a++;a++;
a++;a++;a++;
a++;a++;a++;a++;
a++;a++;a++;a++;
a++;a++;a++;
a++;a++;
a++;a++;
a++;a++;a++;a++;a++;
a++;a++;a++;
a++;a++;a++;a++;
a++;a++;a++;a++;
a++;a++;a++;a++;a++;
a++;a++;a++;a++;a++;a++;
a++;a++;a++;a++;
a++;a++;a++;
a++;a++;a++;
a++;a++;a++;
a++;a++;a++;a++;
a++;a++;a++;
a++;a++;a++;
... 省去 10000 行
}
你是要攀登珠穆朗玛峰么?一个文件里写那么多行代码?
老百
鱼小皮
这段程序逻辑太复杂,没办法嘛。
07 复读机
代码如下:
public static void main() {
int a = 1;
if (a == 1) {
System.out.println("我很帅");
System.out.println("我很帅呀");
a++;
} else if (a == 2) {
System.out.println("我很帅");
System.out.println("我很帅呀");
a++;
} else (a == 3) {
System.out.println("我很帅");
System.out.println("我很帅呀");
a++;
}
}
你这重复代码也太多了吧!要把相同代码抽成独立的函数。图一时方便,以后改代码累死你。人类的本质就是复读机?
老百
鱼小皮
阿巴阿巴阿巴。
08 重庆立交桥
代码如下:
public static void main() {
int a = 0;
int b = 0;
int c = 0;
if (a == 1) {
if (b == 2) {
if (c == 3) {
if (a == 2) {
...
}
} else if (c == 2) {
...
}
}
} else if (a == 2) {
if (b == 2) {
if (c == 1) {
...
} else if (c == 2) {
...
}
}
} else if (a == 3) {
...
} else if (a == 4) {
...
}
}
小皮,你见过重庆立交桥么?
老百
重庆号称最容易“迷路”的城市。
重庆旅游的游客们来自五湖四海,很多朋友旅游之前都做足了功课,但是一旦来到重庆就懵逼了。因为依山而建的地形,使得重庆的道路变得异常复杂,满城都是各种高架立交桥,并且重庆的立交桥和我们平时理解的立交桥不太一样,重庆的立交桥上,有三四层道路,而且每一层道路到达的地方都不一样,如果不小心错过了一个路口,没有个两个小时是找不到原来的路的。
鱼小皮
原来我的代码这么烂啊,怪不得大家都不愿意看。要怎么样才能写出让别人看得舒服的代码呢?
想要写出优雅的代码,首先要学习下代码规范。
老百
鱼小皮
啥是代码规范?写个代码还要规范?
当然,无规矩不成方圆。
老百
什么是代码规范?
代码规范是人为规定的对代码风格、命名、注释的统一要求。通常在项目启动开发前,都要为团队制定一套代码规范,比如代码统一缩进两格、使用驼峰式命名、必须在每个文件开头添加作者和创建日期注释等。
鱼小皮
听起来好麻烦,这样我写代码不就要慢死了?
你呀,还是太年轻。代码规范在团队项目开发中至关重要!
老百
代码规范的作用
遵守代码规范能为团队带来很多好处,比如:
1. 统一的代码风格能够提升团队成员阅读代码的效率。
2. 统一规范有助于合作开发和交接代码,提升团队的氛围。
3. 每个人都有不同的编码习惯,比较霸道的人可能因为看不惯其他人的代码而直接上手修改,会产生很多没有意义的代码变更,有时甚至会影响项目的运行(比如名称改错了)。而统一规范大大消除了这种隐患。
4. 有利于代码的维护,提升团队和项目的稳定性。
鱼小皮
那我自己一个人写代码,不就可以为所欲为了?
当然不行!如果不遵循代码规范,随意命名、不写注释,那么很快你就读不懂自己之前写的代码了(程序员都觉得自己从前写的代码是辣鸡,不是么)。遵循代码规范不仅为了团队,也为了帮助我们养成好习惯,成为更专业的软件工程师!
老百
鱼小皮
百哥,你这饼画的真好,那我应该怎么学习代码规范呢?
不同的团队,代码规范也不同。但是有些知名公司制定的代码规范,非常优秀和专业,被很多公司和程序员学习、参考及使用。
老百
优秀的代码规范
人数越多、项目越大的团队,其代码规范往往更加优秀,更经得起考验,具有更大的参考和学习价值。
比如 Java 语言的代码规范可以参考谷歌的 google-java-style 和阿里的 Java 开发手册。
《阿里巴巴 Java 开发手册》
《阿里巴巴 Java 开发手册》不仅制定了 Java 编程的规约,还有异常日志规约、MySQL 规约、工程规约,非常地全面,推荐学习 Java 的同学阅读和使用。
地址:https://github.com/alibaba/p3c
鱼小皮
爽死了,我这就去学习代码规范,以后让同事爱上看我的代码!
想多了,没有程序员喜欢看代码。
老百
点击下方阅读原文可以阅读中文版谷歌 Java 代码规范哦~
喜欢本文的话,欢迎分享给身边的同学 ❤️
告别辣鸡代码,从我做起!
往期推荐
鱼皮送福利啦
10 月 31 日起 15 天内,鱼皮将为文章阅读数、分享数、留言数最多的读者送上企鹅周边~ 并抽取几名粉丝送出随机小礼品!
阅读最多:超长鼠标垫
分享最多:QQ长鹅
留言最多:QQ小公仔
幸运奖:腾讯云U盘、笔记本等
感谢大家支持,鱼皮会继续努力创作优质内容!