V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Astrian
V2EX  ›  问与答

该如何理解「 Java Coding Standard」?

  •  
  •   Astrian · 2021-08-18 21:15:54 +08:00 · 2433 次点击
    这是一个创建于 1184 天前的主题,其中的信息可能已经有所发展或是发生改变。

    事情是这样的:我在 Monash 的 Information Technology 念 Master,我们 Java 课让我们做一个 CLI 的猜数字小游戏。我做了之后给 tutor 发了源码,tutor 的第一句话是「 Too many Java coding standard violations 」。

    我想了半天,我代码除了没按照 BlueJ 的 class template 来写之外,好像没有别的「违反标准」的行为吧……

    BlueJ 的默认 class 模板

    我的代码风格如下(应该能说明一些问题?):

    截屏 2021-08-18 21.05.48.png

    其实我也不太确定是不是真的有「违反标准」,就来 V2EX 问问各位「真正的」 Java 程序员,平时写代码是不是严格使用「制表键来缩进」等等这类比较「呆板」(我找不到一个中性的形容词,总之就是这么个意思吧?)的标准……

    32 条回复    2021-08-20 11:36:27 +08:00
    hyb1996
        1
    hyb1996  
       2021-08-18 21:28:48 +08:00 via Android
    coding standard,coding style ?
    Astrian
        2
    Astrian  
    OP
       2021-08-18 21:29:37 +08:00
    @hyb1996 对,我第一反应也是这样,是不是在说我大括号没换行以及空格缩进的问题 🤣
    Cbdy
        3
    Cbdy  
       2021-08-18 21:54:46 +08:00 via Android
    代码质量差,没有用面向对象吧,和缩进应该没有太大关系,况且 Java 主流也是用空格缩进
    Astrian
        4
    Astrian  
    OP
       2021-08-18 21:59:47 +08:00 via Android
    @Cbdy 文档里要求抽象的类一个是游戏(主菜单),一个玩家资料,以及一个随机数生成器,其他的除了游戏流程有点太长我同样抽象成一个 static 类了。应该也没有别的能抽象了?
    levelworm
        5
    levelworm  
       2021-08-18 22:00:47 +08:00 via Android
    你们作业里应该有相关的 standard,没有的话找他要就行了。
    Astrian
        6
    Astrian  
    OP
       2021-08-18 22:03:23 +08:00 via Android
    @levelworm 肯定会问,只是先确认一下大家是不是有个共识性的语法标准
    namelosw
        7
    namelosw  
       2021-08-18 22:06:17 +08:00
    你看你左侧的文件树有很多 M,先把那些都修了。

    Java 建议下载个 Intellij,标黄的地方都修了就行,很多地方按 Alt-Enter 可以自动修。

    我理解的 standard violation 一般指这些。

    另外 Java 的社区标准大括号不换行。设计上的代码露出太少看不出来问题。
    levelworm
        8
    levelworm  
       2021-08-18 22:08:26 +08:00
    @Astrian 看了下感觉还行啊,把编辑器自动标出的看看呗。
    Cbdy
        9
    Cbdy  
       2021-08-18 22:13:54 +08:00 via Android
    @Astrian 可以方便说一下题目的内容吗?我写个版本你看一下
    Astrian
        10
    Astrian  
    OP
       2021-08-18 22:36:50 +08:00 via Android
    @namelosw M 是指 Modified,VS Code 内置的 Git Diff 检查器的功能
    namelosw
        11
    namelosw  
       2021-08-18 23:08:30 +08:00
    @Astrian 好吧,我 VSC 用的太少了。不过还是可以试试 Intellij IDEA,我记得里面 Scala 里面用到的 inspection 是社区标准,Java 应该也类似。
    charlie21
        12
    charlie21  
       2021-08-18 23:50:16 +08:00
    能教点有用的吗,一小时六十刀是 tutor 普遍价格吧,让你教我什么叫 Java code conventions ?
    Ehend
        13
    Ehend  
       2021-08-19 00:02:48 +08:00 via Android
    不知道你老师 1 给模板没
    Rheinmetal
        14
    Rheinmetal  
       2021-08-19 07:38:03 +08:00
    大括号之类用代码格式化工具一键格式化呗
    至于其他问题 靠 ci 和 git hook 自动化工具做不了的 code reveiw 看
    流程正规的团队都有自己的标准

    为什么不问问老师 coding standard 包括什么?

    @charlie21 业务写多了的话 就会感觉就是故意挑毛病 增加工作量 能用就行呗 事情这么多
    java101 水平的东西也挑不出来太多毛病 只能讲大括号咯 还有不够 oo ?
    标准格式之类对完全不懂的学生还是有点用的 老司机就...
    Rheinmetal
        15
    Rheinmetal  
       2021-08-19 07:57:13 +08:00   ❤️ 1
    这玩意类似驾校教练教你的过考试用用各种奇怪技巧 真上路大部分用不上 或者是另一套
    tutor 不一定有你懂开发 很可能是没做过业界项目的硕博 做人肉 ide 照本宣科一下
    除了 py 大部分语言都没有强制的缩进 括号之类的规范
    不如去问他把老师的要求搞来 应付一下格式得了
    想卷的话整个 linter/ Prettifier 的 vsc 插件或者基于现有插件的规则配置出来 解放下一届

    人家也是好心 毕竟 master of it 是给跨专业人开的 一下子上 ide 怕接受不了
    新手上路有人指点会很高兴
    老司机开车旁边有人指点你就难受了 虽然 lz 只是迷惑一下(内心 os 你们 java 还整通用规范么 这么死板)

    好不容易是个作业可以放飞自我二挡起步 然后有人跟你说 二挡起步 伤车费油 只能特殊场合用 只会觉得话多 我还要你教么
    Rheinmetal
        16
    Rheinmetal  
       2021-08-19 08:02:19 +08:00
    LZ 现在是网课么 体验如何?
    Astrian
        17
    Astrian  
    OP
       2021-08-19 08:11:04 +08:00 via iPhone
    @Rheinmetal 哈哈哈哈哈哈哈哈好的 我今天去 <del>argue 一下</del> 问问格式

    现在是在国内上网课,目前来说还行吧,相对比较 free,比如上课摸个鱼… 因为学的都是网络结构基础和学过的编程语言。

    哦 python 还是要听一听的…
    cslive
        18
    cslive  
       2021-08-19 09:22:46 +08:00
    我感觉这是在说你没有按模板写注释吧,类注释,方法注释,行注释
    Astrian
        19
    Astrian  
    OP
       2021-08-19 09:32:44 +08:00
    @cslive 我待会重新看一下作业要求(挺长的……)

    @Ehend 只有输出示例,模板是 BlueJ 默认给的
    rpman
        20
    rpman  
       2021-08-19 09:55:22 +08:00
    这代码质量确实太差了点
    但关于 standard, 你不问 tutor 问 V2EX 是几个意思呢? 咱又没拿 tutor 工资
    Astrian
        21
    Astrian  
    OP
       2021-08-19 09:58:55 +08:00
    @rpman 嘛,只是在发邮件问 tutor 之前先确认一下是不是有什么奇奇怪怪的标准罢了,免得贻笑大方。其实也不是啥吐槽啦(((
    zxCoder
        22
    zxCoder  
       2021-08-19 10:17:40 +08:00
    让 IDEA 提示就行了,哪里不对改哪里,IDEA 的基本就是标准
    Astrian
        23
    Astrian  
    OP
       2021-08-19 10:29:07 +08:00
    @zxCoder 我们用的是 BlueJ,不过我实在是用不惯,用的 vscode
    Astrian
        24
    Astrian  
    OP
       2021-08-19 10:51:12 +08:00
    @Cbdy 我不太确定能不能公开发出来,或者你留个邮箱我跟你直接联系一下
    zakokun
        25
    zakokun  
       2021-08-19 14:25:18 +08:00
    用学生邮箱申请 jetbrains 的免费许可,直接用 idea 开发得了,一键格式化基本保证格式标准了,然后再去考虑一下代码结构上的优化
    x940727
        26
    x940727  
       2021-08-19 15:53:22 +08:00
    Java 一般是空格缩进的,我觉得是没有合规的包和注释风格吧?
    liangchen1ce
        27
    liangchen1ce  
       2021-08-19 17:15:53 +08:00
    可以参考 Google Java Style Guide: https://google.github.io/styleguide/javaguide.html
    好久不写 Java 了,但是 lz 代码里的 import,是不是可以避免 import *,只 import 需要的函数?
    Jafee
        28
    Jafee  
       2021-08-19 19:05:17 +08:00
    截图是怎么截的啊? 很好看。
    Astrian
        29
    Astrian  
    OP
       2021-08-19 19:10:40 +08:00 via iPhone
    @Jafee macOS 自带的截屏工具
    vanxy
        30
    vanxy  
       2021-08-19 19:11:10 +08:00
    @Jafee #28 看起来是 Mac 自带截图
    Astrian
        31
    Astrian  
    OP
       2021-08-19 19:12:00 +08:00 via iPhone
    @liangchen1ce 确实只 import 需要的就可以,不过我们上课的话表述两种都行,没有刻意说过只能 import 必须依赖
    astkaasa
        32
    astkaasa  
       2021-08-20 11:36:27 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5942 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 02:01 · PVG 10:01 · LAX 18:01 · JFK 21:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.