垃圾程式碼書寫準則(有意思)
開門見山地說吧,在逛 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
>
(
)
;
《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部落格 ” ,連結:http://blog.itpub.net/70010294/viewspace-2848679/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 寫出一手爛程式碼的19條準則
- 有意思的JavaScript程式碼寫法【持續更新,歡迎留言分享有趣程式碼】JavaScript
- HTML、CSS程式碼書寫規範HTMLCSS
- LINUX命令列書寫規則Linux命令列
- Makefile-3-書寫規則
- 真實性——簡歷書寫你不得不注意的至上準則
- EV程式碼簽名證書和標準程式碼簽名證書有何不同?
- apidoc利用程式碼註釋書寫文件API
- 高效編寫Dockerfile的幾條準則Docker
- 寫了本書,準備連載
- Guava - 拯救垃圾程式碼,寫出優雅高效,效率提升N倍Guava
- Python PEP8程式碼書寫規範Python
- 匹配純小寫英文字元正則程式碼字元
- 書寫可維護程式碼的重要性
- C++程式設計規範-101條規則準則與最佳實踐電子書pdf下載C++程式設計
- 本著什麼原則,才能寫出優秀的程式碼?
- 訂單交易平臺二(寫程式碼之前的準備工作)
- 程式設計師垃圾程式碼分類指南程式設計師
- C++程式語言的四個準則C++
- 五個簡單的原則,帶你寫出整潔程式碼
- 分析一次有意思的需求——HTML程式碼注入HTML
- Android 程式碼混淆規則Android
- 基於Typora的Latex程式碼書寫並移植到word中
- C++程式語言的四個基本準則C++
- .Net Core——用程式碼寫程式碼?
- iOS 分析一次有意思的需求——HTML程式碼注入iOSHTML
- 重構:改善既有程式碼的設計(第二版讀書筆記) - 重構、壞程式碼、寫好程式碼筆記
- CodeMixer完美替代ChaosTool ,iOS新增垃圾程式碼工具,程式碼混淆工具,程式碼生成器,史上最好用的垃圾程式碼新增工具,自己開發的小工具...iOS
- 手寫程式語言-如何為 GScript 編寫標準庫
- 基於準則匹配的影像對準
- CCMixer/CodeMixer工具,完美替代ChaosTool,iOS新增垃圾程式碼工具,程式碼混淆工具,程式碼生成器,史上最好用的垃圾程式碼新增工具,自己開發的小工具iOS
- 如何寫好程式碼
- 如何寫好程式碼?
- 自動寫程式碼?
- 七大SQL程式碼編寫原則:可顯著提高資料庫效能!SQL資料庫
- 程式碼簽名證書
- 程式碼質量-開閉原則
- Go社群行為準則Go