程序员求生秘籍

今天有个新闻说米国有程序员因为没写注释被杀事件。新闻没细看,后来说是假新闻。

不过即使是假新闻,也着实把人们吓得够呛。为此,我试图理了十个实用动作给大家保平安。

1、一个方法不要写得太长。

很多重构的书中都讲到,让你代码不要写得太长。方法里的功能要高度内聚,一个方法你感觉超过一屏,就想着怎么把代码中的独立的功能给抽成一个方法。

2、不要再用eclipse了。

这条也许会招来还在使用eclipse兄弟的骂声。但我发自内心的告诉你们,idea真的可以帮你搞定很多重构和代码结构的优化的很多事情。虽然现在用ecplise的人真的不多了,但还是有些兄弟在用。不多说,试着开始用idea吧。

工具真的蛮重要的。就好比打仗的武器一样。纵使是设计模式学得再好,重构技巧再叼,也请不要忽视工具的重要性。当你精疲力尽的时候,工具出错的概率更低。

3、if else嵌套太多就想办法给消除掉。

消除if else有多种办法。

(1)、反向逻辑法

比如:if(a!=null){

}

这个你也可以写成这样:

if(a==null){

return Result.fail('error message');

}

上面这个方法虽然简单,但真的很实用,可以把你的if else嵌套层数大大的减少。

(2)、多个if的情况

把if里的代码不要写在if里。而是提取一个接口。

if(a){

//此处300行代码

。。。。

}

if(b){

//此处400行代码

。。。。

}

if(c){

//此处500行代码

}

此时你可以抽出接口把代码独立到一个个class类中。

inerface ICheck{

void check(arg ...);

}

class ACheck implements ICheck{

void check(arg ...){

//a的具体实现

}

}

class BCheck implements ICheck{

void check(arg ...){

//b的具体实现

}

}

(3)、约定匹配法

有时候你可以通过map映射来解决具有一定规律的if else,比如最著名的就是 servlet的映射。

put("contextpath/patch",patchHandler);

put("contextpath/del",delHandler);

put("contextpath/put",putHandler);

put("contextpath/post",postHandler);

4、过分重构。

刚开始迷恋重构代码的同学,会陷入过渡重构代码的问题。动不动喜欢,右键,然后refact,然后extract。

你重构要充分考虑你的代码的流程节点和功能职责的单一性原则,否则为了重构而重构,会导致你的代码反而比“满屏的”更难维护。

5、学好英文,起个好名字。

为你的数据库表和类起名字时应该避免以下问题。

别再二话不说照着谷歌翻译来起名字了。直接用谷歌翻译翻译出来也许并不是那个真正的含义。真的需要好好地多查相关领域行业的资料,看看你的那个domain到底该叫什么,否则最后代码就不太好维护了。过几年你英文变好了后你会笑你当初起的名字的。

6、一段好的代码甚至都不需要注释。

好的代码本身就是注释。

比如一个简单功能:如果a存在,那么就把a添加进去。

可读性差的代码:

if(xxx!=null && getCount(xxx)>0 && balalaal.size()>0){

sdfsdfsdfsdfsdfsdf

sdfsdfsdfsdfsdfsdfsd

sdfsdfsdfsdfsdfdsf

sdfsdfsdfsdfsdfsdf;

}

可读性好的代码:

if(exist(a)){

add(a);

}

显然下面这段代码更有可读性。你甚至可以跟着代码大声念出来:如果a存在,那么就把a添加进去!

好的代码就像一篇文章一样!

这里只是举个例子,实际开发中你还是得根据具体情况来抽取和编排你的代码。

7、多写//todo注释。

你写的代码不可能一下子就完美无比。对于那些你不太满意的代码,或者自己觉得有隐患的代码,请多写//todo ,做个记号,以后可以优化。否则时间久了你也就忘了那些潜在有问题的代码了。

8、遵循约定。

做一个有规则感的程序员。规则感就是如果大部队都是一个风格,那么也请你一定遵循,即使你可能认为局部有一些问题。此时的规则和约定已经成为了团队和部门沟通的暗语,如果大家都遵循会避免很多的误会。创新这件事情可以放在代码具体实现上,不建议放在风格上。

9、感觉代码慢慢变得复杂时不妨想想设计模式。

设计模式不仅仅是某些特定场景的最佳实践,同时有时候也能帮你重构你的代码,让代码布局更加的优雅。比如上面的消除if else的第二个方法,其实就是一种设计模式。

10、转发此文,做个爱分享的人!

ps:文中的abc命名也是不建议的。

原文发布于微信公众号 - ImportSource(importsource)

原文发表时间:2018-09-23

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云飞学编程

Python大神讲给那些基础不怎么牢固的同学的一节课:字符串精讲!

推荐下小编的Python学习群5421107414,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2018最新的Python和0基础...

12810
来自专栏Golang语言社区

C++麻将游戏算法深入解析

这两天为了工具箱的完善,整理了这些年引擎开发的一些资料,无意中发现06年写的一个麻将算法,编译运行了一下,还是有点意思的,拿出来整理一下分享给大家。 ...

39540
来自专栏Java大联盟

Java基础之面向对象

11850
来自专栏牛客网

前端面试:链家 -3月24日

一面 1. React组件通信 2. 什么是原型 3. CSS定位属性,怎么定位的 4. TCP与HTTPS的区别 5. 怎么获得对象上的属性(面试官期待的是O...

462110
来自专栏猿湿Xoong

Android | 一个很糙的字母手势识别方案

12730
来自专栏Java学习网

写出好程序的11个技巧

  有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码时,你就要开始阅读它...

33650
来自专栏北京马哥教育

R、Python、Scala 和 Java,到底该使用哪一种大数据编程语言?

当你找到大数据项目,你首先会怎么做?确定这个项目的问题领域,确定这个项目的基础设施,在往上,确定项目的框架,选择最适合用来处理当前数据的所有内容。这个时候唯一摆...

41650
来自专栏牛客网

一点咨询 提前批 大数据岗 面经总结

【每日一语】这个世界,生活,人本身,都是荒诞的。不要白费心智去猜,去理论,因为无可猜,无可理论。事情并不一定要因为一个理由而发生,发生之后并不一定要达到什么目的...

17410
来自专栏C/C++基础

编程语言分类

从1946年世界第一台计算机ENIAC诞生至今,计算机从早期的军事计算领域,已经渗透到人类生产和社会发展的各个领域。从政府机构到企业部门、从军事领域到民用行业、...

1.2K30
来自专栏程序人生 阅读快乐

编写高质量代码:改善Java程序的151个建议

在通往“Java技术殿堂”的路上,本书将为你指点迷津!内容全部由Java编码的最佳实践组成,从语法、程序设计和架构、工具和框架、编码风格和编程思想等五大方面对J...

9910

扫码关注云+社区

领取腾讯云代金券