Java编程中,有哪些好的习惯从一开始就值得坚持?

来源:zhihu.com/question/32255673/answer/532272606

1. 规范化自己的代码,少点个人风格,多点通用规矩,并学会使用CheckStyle工具。

其实任何东西我们都希望它能够“自动化”,随着编程经验的提升,大部分编程规范你已经了然于心,但是实际操作的时候,又总是忘这忘那,我们希望一个工具来帮我们自动检测我们的程序是否是符合规范,结构良好的。

事实上,任何语言都是有自己的编程规范的,编程规范的制定,十分有利于代码的阅读和潜在Bug风险的降低,比如在Java中,有严格的命名规范:

对于类(Class)的命名,有这样的规范:

Class names should be nouns, in mixed case with the first letter of each internal word capitalized. Try to keep your class names simple and descriptive. Use whole words-avoid acronyms and abbreviations (unless the abbreviation is much more widely used than the long form, such as URL or HTML).

类的名字必须是名词,每个单词的第一个字母需大写。尽可能让你的类名称简洁又能传递清楚含义。尽量使用单词全拼,避免同义词或缩写(除非缩写使用更广泛,比如URL, HTML等)。

比如在Java中,有严格的文档规范:

/**
 * Returns an Image object that can then be painted on the screen. 
 * The url argument must specify an absolute {@link URL}. The name
 * argument is a specifier that is relative to the url argument. 
 * <p>
 * This method always returns immediately, whether or not the 
 * image exists. When this applet attempts to draw the image on
 * the screen, the data will be loaded. The graphics primitives 
 * that draw the image will incrementally paint on the screen. 
 *
 * @param  url  an absolute URL giving the base location of the image
 * @param  name the location of the image, relative to the url argument
 * @return      the image at the specified URL
 * @see         Image
 */
 public Image getImage(URL url, String name) {
        try {
            return getImage(new URL(url, name));
        } catch (MalformedURLException e) {
            return null;
        }
 }

文档是用HTML语言写成的,前半部分是关于当前方法或类的描述,后面需要有参数标签@param和返回标签@return,还可以加一些别的标签,比如@see,只有这样,当别人试图引用你的程序时,才能马上明白你的某段程序是用来干嘛的,参数传递,返回等一目了然,要知道,实际工作中,大量的协作就意味着代码需要高度的重用性,你必须把你的程序封装完美,并且让别人仅仅看你的文档,就知道你的这个API怎么用。

上面说的仅仅是编程规范的冰山一角了,问题是,你有时会忘掉或用错一些规范,即便你知道它。

所以我们需要使用checkstyle插件去自动检测我们的程序是否符合规范。

对于Java而言,详情请见:http://checkstyle.sourceforge.net/

Github地址:https://github.com/checkstyle/checkstyle

在各大JavaIDE中,可以直接在Eclipse Marketplace中下载:

其他的语言应该也有自己的插件,可以自行谷歌了解。

2. 宁可变量名长,也不要让变量名短得让人无法推测其含义。

3. 在电脑里安装两套输入法,编程的时候,将中文输入法彻底关掉,确保任何快捷键都不会将其转换成中文输入法,防止中文类似符号引起混淆,比如:

中文 :(); English: () ;

一点点小错误,就有可能让你多花一两个小时在没有意义的事上,人生苦短,尽量避免低级错误。

4. 尽可能杜绝重复代码,凡是需要用至少两次的代码,给它单独做一个类或函数。

5. 避免类与类之间的内部调用(Cycle Reference),其实也就是降低函数模块的耦合程度。类与类之间的调用只允许通过接口,保证更改某个类的时候,其他的仍然能工作。

6. 多读别人的优秀代码,拿别人的优秀代码和自己的代码进行对比,学习别人的长处,吸收经验。

7. 尝试着做内容的生产者,尝试着写一些教程或笔记,分享给社区,不要只做社区内容的吸收者,还要不断地生产内容,回馈社区给你的帮助,比如在StackOverFlow上回答别人的问题等。

8. 既要脚踏实地,也要多看看社区发生了什么新闻,有什么新的技术和软件的发布,这些技术和软件将怎样影响你的开发工作,现在使用的IDE或Editor是否有更好的替代产品等等。

9. 没有任务的时候,也不要闲下来,去开发点你喜欢的东西,从中挑战自己,增长经验。

10. 不要过分依赖教程,要学会看官方文档。凡是能被做成教程的东西,往往已经过时了,最新的技术,最新发布的标准,往往没有现成的教程,你需要去认真阅读官方文档,那里的东西才是最权威的。

11. 不要参与语言好坏的争论,人们往往偏向于喜欢自己用得熟练,用得多的那个语言,语言好坏之争,就和争谁的女朋友漂亮一样,我当然觉得自己的女朋友(虽然是null)最漂亮,但是别人并不这么觉得。

12. 当你有什么需求的时候,往往别人也有这个需求,而且往往也有了相应的工具去解决你这个需求,比如,你想将函数的调用关系可视化,弄成树状图那样,这样的工具已经有了,比如SourceInsight(付费),Source Navigator(免费)等。

13. 少在国内的XX软件园里下载各种破解软件,盗版软件等,这些软件园为了盈利,会在你安装的过程中,悄无声息地给你安装上一堆其他的流氓软件,360首当其冲,这些垃圾软件,删的越干净越好。

14. 你的开发电脑,CPU可以差些,但内存最好大些,推荐至少要8G,甚至推荐10G往上走,你常常需要同时打开一堆浏览器页面和一个IDE甚至还有别的一堆工具,如果你做过安卓开发,AndroidStudio动辄就调用你电脑2-3G的内存,一般的4G电脑肯定是吃不消的,严重降低开发体验,但也并不是让你换电脑,内存条了解一下。

15. 保持一个健康,干净的电脑状态,硬盘里的文件存储要有调理,容易寻找指定文件,降低文件丢失概率,加快文件寻找速度。

16. C盘快满了的话,可以通过Disk Manager将别的磁盘的空间送给C盘。

17. 用NetWork NotePad画网络图表示函数调用关系(当然你可以用别的来画),像这样:

这是前两天编一个FlappyBird时草草画的图,虽然简陋,但有用。

18. 可以考虑用一个电脑架子,防止乌龟颈,保护颈椎。

19. 下载一个护眼宝,保护视力。

20. 多看Java团长公众号里的文章,但不要做一个不点赞的冷漠青年。

(完)

本文分享自微信公众号 - Java团长(javatuanzhang)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-24

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏上善若水

### 0x01 C++ 资源大全

关于 C++ 框架、库和资源的一些汇总列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。

46730
来自专栏Flutter入门到实战

kotlin和java混合开发总结目录一、Kotlin集成步骤和注意事项(基于Kotlin1.3.0):二、Kotlin和Java文件互相转换三、Kotlin项目里面集成Java的module四、Ja

声明:本文是作者AWeiLoveAndroid原创,版权归作者AWeiLoveAndroid所有,侵权必究。如若转发,请注明作者和来源地址!未经授权,严禁私自转...

30850
来自专栏高性能服务器开发

一位资深程序员大牛给予Java初学者的学习路线建议

很多人问我如何学习Java的?能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍。这一部分的内...

13830
来自专栏JavaQ

高并发编程-volatile详解

在介绍volatile之前,先简单了解一下Java内存模型。在Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏...

13640
来自专栏生信小驿站

NA、Inf、NaN、NULL等值处理

这几个都是R语言里面的特殊值,都是R的保留字(reserved words)。它们的意义分别为:

18630
来自专栏cmazxiaoma的架构师之路

RabbitMQ生产端消息可靠性投递方案分析

导文: 1.什么是RabbitMQ 2.Java开发技术大杂烩(三)之电商项目优化、rabbitmq、Git、OSI、VIM、Intellj IDEA、HT...

43730
来自专栏chenssy

哦,这就是java的优雅停机?(实现及原理)

其实优雅停机,就是在要关闭服务之前,不是立马全部关停,而是做好一些善后操作,比如:关闭线程、释放连接资源等。

18720
来自专栏CSDN技术头条

小程序开发:腾讯、阿里、百度、头条都在抢!

最早小程序在微信平台上成名,手握 10 亿月活用户的微信,很快成为小程序创业者的掘金之地。巨头的嗅觉敏锐,支付宝、百度随即跟进,今日头条也开始内测小程序,几大平...

23520
来自专栏比原链

Bytom Java版本离线签名

Gitee地址:https://gitee.com/BytomBlockchain/bytom

16440
来自专栏零基础使用Django2.0.1打造在线教育网站

关于JAVA你必须知道的那些事(一):概述

第一次写文章,有点小紧张,不过没关系,因为我面对的都是小白。好了废话少说,直接开始吧。

11720

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励