百科问答小站 logo
百科问答小站 font logo



程序员们有什么好的编程习惯? 第1页

  

user avatar   ze.ran 网友的相关建议: 
      

注释里尽量写为什么,而不是做了什么。

做了什么,看代码就好,代码不会骗人。但为什么要写成这样,有时候就非常让人困惑。有可能是处理某个 corner case,有可能是绕过某个系统限制,也可能是什么奇葩需求,这种代码,没有当时的 context,过几个月看,像甲骨文一样,不知道是想干什么。再有年轻力壮的,看不顺眼来优化一下,以后就不知道哪个地方会崩了。

其实,大部分的代码应当是不言自明的,不需要注释。


user avatar   huangzhe 网友的相关建议: 
      

1.代码重构得趁早

在开发过程中,为了赶进度,我们很容易「欠下技术债务」,也就是为了赶时间,用了一些不规范的写法。技术债务积累多了,人称「屎山」,日后应用出现问题,查起bug来非常的费劲,改起来也可能修一个bug出两个bug,甚至严重的,一改就崩溃。

所以每次发完一个版本,要及时review,并抽时间优化,有必要的话,重构下。关于如何重构我很久之前写过一篇文章,可能观点有点简单,就随便看看吧。


2. 不要注释掉无用代码,直接删掉

有的人觉得这个代码日后会用到,所以经常把一大段代码注释掉,然后一年过去了,接手的同事也不敢删,于是留了一段祖传的无用注释。我认为,放心删掉吧,把代码变更追踪的功能交给svn或者git等版本管理工具。删了之后在log里写清楚你删了什么内容就好,日后如果用得到,你直接就去log里找当初的更改,然后复制回来就行了。这样做的好处是:

  • 提高代码可读性
  • 不给接手的同事造成困惑
  • 防止堆积成「屎山」


3. 切勿用拼音来命名变量

这是老生常谈了,拼音命名变量的坏处是,你很可能很快忘记一个变量的意义,而且可读性也不好。例如下面这段代码,你能看出变量名什么意思吗?

       var renwu = new Renwu() renwu.create() renwu.run()      

renwu是人物还是任务啊?renwu.run()是人物跑动还是任务执行啊?你可能写完代码三天后都忘了。


4. 代码写好同时也要规范注释

有的公司喜欢代码具有「自解释性」,认为代码如果需要注释,那就是代码没写好。其实我认为,写好代码后依然需要规范的注释,这可以方便输出文档,尤其是庞大的项目。例如你是做后端的,你做的REST API客户端要调用,你不能让他们直接读你的代码吧?这时候规范的注释就能帮你很大的忙了。

例如Javadoc,可以把你规范的Java代码注释转成格式好看的文档。


5. 函数里的代码保持同样的抽象层级。

有的人写代码喜欢把所有东西都写在一个函数里,其实大可不必,这样的后果是大量抽象层级不一样的内容连接在一起,导致这个函数可读性不好。这里举个例子

       public void loadgame(username+password){     initResource();     Socket s=new Socket("localhost",6666);       DataOutputStream dout=new DataOutputStream(s.getOutputStream());       dout.writeUTF(username+password);       dout.flush();       dout.close();       loadScene(); }     

这是不是读起来磕磕碰碰的。因为他们不是一个抽象层级的代码,你读起来思维需要多次转换。但如果改成

       public void loadgame(username, password){     initResource();     login(username, password)     loadScene(); }  private void login(username,password)) {     Socket s=new Socket("localhost",6666);       DataOutputStream dout=new DataOutputStream(s.getOutputStream());       dout.writeUTF(username+':'+password);       dout.flush();       dout.close();   }     

是不是就好读多了,把几个抽象级一样的函数放一起,把底层操作分开函数放。这样不仅利用阅读,也在debug时迅速查找。


最后再说一句,结对编程也是个不错的实践,我和我的猫咪都挺喜欢




  

相关话题

  字节跳动面试难吗,应该如何应对? 
  请问各位程序员,是我的思维方式有错误吗? 
  程序员都是怎么缓解找不到bug狂躁的心情? 
  程序员们有些什么好玩儿的程序分享? 
  如何用一句话证明你是程序员? 
  有哪些较好的 C 语言程序源码可供新手临摹参考? 
  如果中国一开始就禁止微软和英特尔AMD进入中国大陆地区,现在的中国大陆地区会出现哪些现象? 
  程序员如何做到年薪 50 万? 
  对于程序员是全栈好?还是专注一个领域好? 
  由月饼事件,你对阿里的价值观有什么看法? 

前一个讨论
知识壁垒容易造成对立,如今紧张的医患关系,怎么能打破医生对疾病知识的壁垒呢?
下一个讨论
学了三年的 Linux 了,我现在不能立马写出一个简单的 shell 脚本,怎么回事啊?





© 2024-11-08 - tinynew.org. All Rights Reserved.
© 2024-11-08 - tinynew.org. 保留所有权利