垃圾程式碼書寫準則(有意思)
開門見山地說吧,在逛 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
- css書寫規則總結CSS
- PL/SQL 01 程式碼編寫規則SQL
- HTML、CSS程式碼書寫規範HTMLCSS
- 程式碼書寫規範(Java) (轉)Java
- HTML 和 CSS 程式碼結構的基本準則HTMLCSS
- 真實性——簡歷書寫你不得不注意的至上準則
- EV程式碼簽名證書和標準程式碼簽名證書有何不同?
- 高效編寫Dockerfile的幾條準則Docker
- 1、Shell命令列書寫規則命令列
- LINUX命令列書寫規則Linux命令列
- Android程式碼的書寫規範Android
- 寫了本書,準備連載
- 程式碼垃圾桶
- 寫程式碼前的準備,你做好了嗎?
- Guava - 拯救垃圾程式碼,寫出優雅高效,效率提升N倍Guava
- Generator:同步程式碼書寫非同步情懷非同步
- apidoc利用程式碼註釋書寫文件API
- 如何書寫高質量的jQuery程式碼jQuery
- 匹配純小寫英文字元正則程式碼字元
- android jni程式碼編寫規則--整理總結Android
- 提高 Unity 中 C# 程式碼質量的 21 條準則UnityC#
- 每個程式設計師都該知道的編碼準則程式設計師
- 書寫可維護程式碼的重要性
- Python PEP8程式碼書寫規範Python
- JavaScript-總結常用程式碼書寫規範JavaScript
- [譯] 編寫整潔 CSS 程式碼的黃金法則CSS
- 書寫高質量程式碼之狀態維護
- Android & Java 書寫簡潔規範的程式碼AndroidJava
- C++程式設計規範-101條規則準則與最佳實踐電子書pdf下載C++程式設計
- 本著什麼原則,才能寫出優秀的程式碼?
- 編寫程式碼的若干個基本規則(以Java為例)Java
- 訂單交易平臺二(寫程式碼之前的準備工作)
- 程式設計師垃圾程式碼分類指南程式設計師