首页 > 应用开发 > Java > 垃圾代码书写准则(有意思)
开门见山地说吧,在逛 GitHub 的时候,发现了一个非常有意思的项目,地址如下所示:
名叫“ 垃圾代码书写准则”,瞧这名字,我真的是服了。作者也是良苦用心,从反面教材的角度来阐述正确书写代码格式的重要性。作者使用 JavaScript 编写的代码示例,我把它重制成了 Java 版,并且用我自己的语言风格翻译成了中文,希望小伙伴们能够喜欢。
命名越短,就需要越多的时间去思考代码逻辑等问题。
Good 👍🏻
int a = 42;
Bad 👎🏻
int age = 42;
💩 变量/方法命名风格不统一
为风格不统一干杯。
Good 👍🏻
int wWidth = 640; int w_height = 480;
Bad 👎🏻
int windowWidth = 640; int windowHeight = 480;
💩 不写注释
反正没人能读懂你的代码。
Good 👍🏻
int cdr = 700;
Bad 👎🏻
注释应该包含一些“为什么”,而不是一些“是什么”。如果代码连是“什么”都表达不清楚,那代码也太烂了。
// 700ms 的数量是从 UX A/B 测试结果中得到的一个经验值。
// @查看: <详细解释 700 的一个链接>
int callbackDebounceRate
=
700
;
💩 使用母语写注释
如果你的母语是英语,那么请忽略这条准则。
Good 👍🏻
// Закриваємо модальне віконечко при виникненні помилки.
toggleModal
(
false
)
;
Bad 👎🏻
// 隐藏错误弹窗
toggleModal
(
false
)
;
PS:如果英语书写能力不是很强的话,建议还是用母语吧。毕竟说清楚总比说不清楚要强。
再次为风格不统一干杯。
Good 👍🏻
String
[
] i1
=
{
"1"
,
"2"
,
"3"
,
"4"
}
;
String i2
[
]
=
{
"1"
,
"2"
,
"3"
,
"4"
}
;
Bad 👎🏻
String
[
] wanger
=
{
"1"
,
"2"
,
"3"
,
"4"
}
;
String wangsan
[
]
=
{
"1"
,
"2"
,
"3"
,
"4"
}
;
💩 尽可能把代码写成一行
Good 👍🏻
IntStream
.
range
(
1
,
5
)
.
boxed
(
)
.
map
(i
-
>
{ System
.out
.
print
(
"Happy Birthday "
)
;
if
(i
==
3
)
return
"dear NAME"
;
else
return
"to You"
;
}
)
.
forEach
(System
.out
:
:println
)
;
Bad 👎🏻
for
(int i
=
1
; i
<
5
; i
++
)
{
System
.out
.
println
(
"Happy Birthday "
+
(i
==
3
?
"dear NAME"
:
"to you"
)
)
;
}
💩 对错误信息不管不顾
无论什么时候发现错误,都没有必要让其他人知道。
Good 👍🏻
try
{
// 意料之外的情况。
}
catch
(error
)
{
// tss... 🤫
}
Bad 👎🏻
try
{
// 意料之外的情况。
}
catch
(error
)
{
// and/or
logError
(error
)
;
}
💩 使用大量的全局变量
全球化的原则。
Good 👍🏻
int x
=
5
;
void
multi
(
)
{
x
= x
*
2
;
}
multi
(
)
;
// 现在 x 是 10
Bad 👎🏻
int x
=
5
;
int
multi
(
int num
)
{
return num
*
2
;
}
x
=
multi
(x
)
;
// 现在 x 是 10
💩 声明根本不会使用的变量
万一以后用了呢?以备不时之需。
Good 👍🏻
int
sum
(
int a
, int b
, int c
)
{
int timeout
=
1300
;
int result
= a
+ b
;
return a
+ b
;
}
Bad 👎🏻
int
sum
(
int a
, int b
)
{
return a
+ b
;
}
💩 如果条件允许的话,从不指定类型。
Good 👍🏻
// 享受便捷的快乐
List list
=
new
ArrayList
(
)
;
list
.
add
(
"Hello World"
)
;
list
.
add
(
18
)
;
Bad 👎🏻
List
<String
> nameList
=
new
ArrayList
<String
>
(
)
;
https://shimo.im/docs/v6pJqdKvhhXWXRCJ/ 《java学习上遇到问题该如何解决?》
// 编译出错
nameList
.
add
(
18
)
;
💩 没鸟用的代码
看起来更严谨,其实很多余。
Good 👍🏻
Integer
multi
(
Object num
)
{
if
(
!
(num
instanceof
Integer
)
)
{
return
null
;
}
else
if
(num
!=
null
)
{
return
(Integer
) num
*
2
;
}
return
null
;
}
Bad 👎🏻
Integer
multi
(
Object num
)
{
if
(num
instanceof
Integer
)
{
return
(Integer
) num
*
2
;
}
return
null
;
}
💩 大量的 if-else 嵌套
Good 👍🏻
void
someMethod
(
int a
, int b
, int c
)
{
if
(a
>
0
)
{
if
(b
>
0
)
{
if
(c
>
0
)
{
int result
= a
/ b
/ c
;
}
}
}
}
Bad 👎🏻
void
someMethod1
(
int a
, int b
, int c
)
{
if
(a
<
0
|| b
<
0
|| c
<
0
)
{
return
;
}
int result
= a
/ b
/ c
;
}
💩 参差不齐地缩进
参差不齐乃幸福本源。
Good 👍🏻
String
[
] wanger
=
{
"1"
,
"2"
,
"3"
,
"4"
}
;
String
[
] wangsan
=
{
"1"
,
"2"
,
"3"
,
"4"
}
;
Arrays
.
asList
(wanger
)
.
stream
(
)
.
forEach
(System
.out
:
:println
)
;
Arrays
.
asList
(wangsan
)
.
stream
(
)
.
forEach
(System
.out
:
:println
)
;
Bad 👎🏻
String
[
] wanger
=
{
"1"
,
"2"
,
"3"
,
"4"
}
;
String
[
] wangsan
=
{
"1"
,
"2"
,
"3"
,
"4"
}
;
Arrays
.
asList
(wanger
)
.
stream
(
)
.
forEach
(System
.out
:
:println
)
;
Arrays
.
asList
(wangsan
)
.
stream
(
)
.
forEach
(System
.out
:
:println
)
;
💩 代码行数多的方法的比少的好
不要把代码逻辑分成可读的部分。
一个类中的代码行数超过 10000 行。
一个方法中的代码行数超过 1000 行。
一个方法里既做减法处理又做加法处理,还做乘除的处理。
代码测试是测试工程师的事,关我屁事。
随心所欲地编写代码,特别是在一个团队中有多个开发人员的情况下,我崇尚“自由”。
从一开始就不要。
代码尽管已经废弃了,注释掉就行了,没必要删掉。
好了,小伙伴们还有需要补充的吗?
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70010294/viewspace-2848679/ ,如需转载,请注明出处,否则将追究法律责任。