查看原文
其他

编程百晓生 | 世上竟有如此优雅的代码!

鱼皮 程序员鱼皮 2022-08-14

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 代码规范哦~ 


喜欢本文的话,欢迎分享给身边的同学 ❤️


告别辣鸡代码,从我做起!


往期推荐

小记 | 从 0 到 1,看我玩弄千万日志于股掌

编程百晓生 | 啥是数据库?

小记 | 再次登上学生时代的个人博客,泪目

编程百晓生 | 我竟然被狗狗币勒索了?

编程百晓生 | 大的数据就是大数据?



鱼皮送福利啦

10 月 31 日起 15 天内,鱼皮将为文章阅读数、分享数、留言数最多的读者送上企鹅周边~ 并抽取几名粉丝送出随机小礼品!


阅读最多:超长鼠标垫

分享最多:QQ长鹅

留言最多:QQ小公仔

幸运奖:腾讯云U盘、笔记本等


感谢大家支持,鱼皮会继续努力创作优质内容!




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存