身为一个半路出身的 Java 程序员 如何规范代码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lueffy
V2EX    Java

身为一个半路出身的 Java 程序员 如何规范代码

  •  
  •   lueffy 2018-06-21 14:19:00 +08:00 5066 次点击
    这是一个创建于 2676 天前的主题,其中的信息可能已经有所发展或是发生改变。

    转行 Java,刚工作几个月,目前所在项目组是刚组的 Java 团队,所以没有人带 做的第一个项目就是一个班主任管理系统,主要是查,现在也上线了。 现在在做一个外教招聘系统,业务比较简单,后台的部分前后端都自己写 那么问题来了,虽然东西写出来能用,但是我总觉的心虚,总是觉得自己“不正规” 开发软件用的是 idea 装了阿里规范的插件,如果有提示我不规范的地方,我会立马改正 但是总是觉自己还是有不规范的地方,具体我不知道,因为我如果知道我就改了

    我的问题是,我怎么才能知道自己的代码是否规范,在没有指导,没有 code review 的情况下? 多读一些源码? 如果可以的话,还是比较希望有那种教程式的源码,因为一般代码,虽然有些地方好,但如果经验不足,你也不知道它好,更不知道好在哪里

    总之,身为一个半路出身的 Java 程序员,怎么才能让自己的代码规范起来呢?有什么推荐的书籍或者教程吗?

    26 条回复    2018-06-22 10:28:19 +08:00
    lueffy
        1
    lueffy  
    OP
       2018-06-21 14:24:57 +08:00
    举个栗子吧
    ORM 接数据,我都是 Java bean 和 数据库字段一模一样 (是用逆向工程生成的实体类)
    但是新来的一个三年经验的小伙伴说这样不规范,如果数据库表有变动,就会有问题,应该用 VO 去映射表中的字段 balabala
    然而其实我不是很懂
    之前听一个朋友说他们公司都会有相关的规范,那么这些规范,或者惯例,我上哪儿去学习?
    jswh
        2
    jswh  
       2018-06-21 14:28:41 +08:00
    做好 DRY, 做好 UT,距离干净的代码就走了一半。实在要看书,看看 clean code 吧
    yogogo
        3
    yogogo  
       2018-06-21 14:35:12 +08:00
    偶尔看看 github 上面的代码,还有看书~
    xiao7117
        4
    xiao7117  
       2018-06-21 14:35:33 +08:00
    推荐:《重构-改善既有代码的设计》
    Raymon111111
        5
    Raymon111111  
       2018-06-21 14:36:56 +08:00
    看看组里别的代码怎么写的

    不知道怎么是规范的话, 和组里其他人保持一致也是好的
    ren2881971
        6
    ren2881971  
       2018-06-21 14:40:30 +08:00
    写好有效注释先。。
    quickma
        7
    quickma  
       2018-06-21 14:58:51 +08:00
    代码规范并不是代码的格式规范,更多的是思想的规范,所以这不是一个一蹴而就的过程,需要在编写代码的不断的学习,记录,练习,进而成为一种习惯。
    xiaowangge
        8
    xiaowangge  
       2018-06-21 15:12:55 +08:00   1
    《唯品会 Java 开发手册》 1.0 版

    https://vipshop.github.io/vjtools/#/standard/
    blenderal
        9
    blenderal  
       2018-06-21 15:13:36 +08:00   1
    去考个阿里巴巴编码规范证书考一遍大致就知道那些规范了
    yazoox
        10
    yazoox  
       2018-06-21 17:04:20 +08:00
    用 lint,机器比人靠谱。
    多报几次错,多 fix 几个 bug,你就知道该如何“规范”代码了。
    shanshuiwen
        11
    shanshuiwen  
       2018-06-21 17:40:20 +08:00
    ide 装个阿里巴巴规范插件,有事没事扫一扫、看一看
    shanshuiwen
        12
    shanshuiwen  
       2018-06-21 17:41:01 +08:00
    写得多了,自然就规范了
    hitmanx
        13
    hitmanx  
       2018-06-21 19:23:16 +08:00   1
    我的理解,你说的更多的是“代码质量”而不是“代码规范”。

    这个靠个人提高就比较难了,需要多看别人的代码还得经常去思考,但是很多情况下你不熟悉这个项目并且接触不到作者的话,基本只能看到代码是写成什么样,但是很难知道代码为什么要写成这个样,是有什么样的想法和背景在里面,哪些又是预留给未来扩展用的。

    相对来说,如果你的项目,有牛人给你 code review 的话会进步快很多,因为你能从中学到东西,看到自己看不出的问题,学到更好的设计方法。自己看自己的代码很难看出问题,但是在别人尤其是有经验的开发者看来可能处处都是问题
    nl101531
        14
    nl101531  
       2018-06-21 19:40:28 +08:00 via Android
    阿里 Java 开发手册啊
    AltairT
        15
    AltairT  
       2018-06-21 19:40:53 +08:00 via iPhone
    我能说我自学时觉得应该是从数据库查询是返回 bean,然后根据情况决定到页面是否用再转换成 vo。

    结果来的这家公司用的 spring,springmvc 加 jdbc 封装,前台是 jq jsp,好多地方都是查出二维数组,有的封装成 bean 更多是从数组拿值然后放到 jsp 页面……
    mentalkiller
        16
    mentalkiller  
       2018-06-21 20:18:21 +08:00
    阿里有一个 java 代码规范,可以搜索下,还是比较权威的
    MoHen9
        17
    MoHen9  
       2018-06-21 20:31:26 +08:00 via Android
    谷歌不是有个 Java 代码规范吗?我觉得非常好,为什么不找来看看呢?
    acupmvp
        18
    acupmvp  
       2018-06-21 20:47:00 +08:00
    不必过于追求代码规范,将业务写清楚,代码写工整,可读性强即可。
    你可以参考下我之前发的内容。应该可以开阔一些思路。
    arthasgxy
        19
    arthasgxy  
       2018-06-21 21:11:27 +08:00
    搞数据的,我来说一下我的情况,权当听个笑话吧。

    我因为上学的时候英语没听过课,所以可以说是个英语盲,会的英语单词不超过 3、5 十个的那种。
    当然我也用不到 java,主要是用 python 和 sql,常用拼音来写变量 /字段,老大开玩笑说我拉低全组逼格,所以说起规范,可能我的规范是 0。

    但现实是,别人实现不了的功能我能实现,同样的地方我不容易出错别人写就会出问题。(当然这话有点拽,但很多次证明至少我还是有些料的,这里就不细说了)
    我的理解,写东西之前先多想想,哪怕再小的功能,用笔在本子上写写画画,拆解功能,再想想有什么可能出现的问题,记下来。比什么都管用。
    最后当自己写的代码出问题的时候,修完再去多想想自己为什么会出问题,以后怎么来避免。
    laudukang
        20
    laudukang  
       2018-06-21 21:32:35 +08:00
    wdlth
        21
    wdlth  
       2018-06-21 22:40:42 +08:00   1
    装上 SpotBugs, PMD, SonarLint,规范标记可以打到你怀疑人生。
    jerrry
        22
    jerrry  
       2018-06-21 22:45:58 +08:00 via Android
    @arthasgxy 学好英语跟写好代码不冲突
    fuchaofather
        23
    fuchaofather  
       2018-06-22 09:54:03 +08:00
    可以参考阿里巴巴的规范. https://github.com/alibaba/p3c?spm=a2c4e.11153940.blogcont69327.9.49d74b623wPqPA

    国内用这个规范的应该不少,
    specita
        24
    specita  
       2018-06-22 09:57:26 +08:00
    idea 装个 阿里的规范 插件
    thinkmore
        25
    thinkmore  
       2018-06-22 10:17:14 +08:00   1
    其实你这是不自信。

    首先相信自己,其次你通过规约软件提醒你不符合规范的都改了,这很好,然后看看别人写的代码,学习写的好的地方。
    有空看看你常用工具包的源码,看看大神怎么写的,比如 guava、commons 等。
    Sirormy
        26
    Sirormy  
       2018-06-22 10:28:19 +08:00
    当然是看规范咯
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2495 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 05:14 PVG 13:4 LAX 22:14 JFK 01:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86