務實的程序員,他們有哪些特質?
他們面臨問題時,在解決方案中透露出務實的態度、風格、理念。他們總是越過問題的表面,試着將問題放在更寬泛的大環境下綜合考慮。他們爲所做的一切負責,責任感驅使着務實派的程序員,在軟件的熵中,保持項目的有序。
-
務實的哲學與務實的方法 -
避免知識重複的陷阱、靈活駕馭基本工具 -
防範安全漏洞、組建務實的入門套件 -
寫出有彈性、動態、適配性強的代碼 -
無情而有效地做測試
工欲善其事
當編輯文本時,以字符、單詞、行、段落爲單位移動光標及進行選擇
當編輯代碼時,在各種語法單元(配對的分隔符、函數、模塊……)之間移動
做完修改後,重新縮進代碼
用單個指令完成代碼塊的註釋或者取消註釋
Undo 並 Redo 變更
把編輯窗口切割成多個面板,然後在它們之間跳轉
跳轉到特定的行號
……
優秀設計的精髓
想要可靠地開發軟件,讓開發項目更容易理解和維護,需要遵循的原則是:在一個系統中,每一處知識都必須單一、明確、權威地表達。讓我們來看一個典型的例子:
def print_balance(account)
printf "Debits: %10.2f\n", account.debits
printf "Credits: %10.2f\n", account.credits
if account.fees < 0
printf "Fees: %10.2f-\n", -account.fees
else
printf "Fees: %10.2f\n", account.credits
end
printf "———-\n"
if account.balance < 0
printf "Balance: %10.2f-\n", -account.balance
else
printf "Balance: %10.2f\n", account.balance
end
end
先不說不應該用浮點數保存貨幣金額,這段代碼中至少有三處重複。
printf
的調用中,相同字段的格式反覆出現。我們固然可以增加一個常量,把這個常量傳給每次的調用,但爲什麼不直接使用已經定義的函數?解決上面兩個重複問題後,代碼現在長這樣:
def format_amount(value)
result = sprintf("%10.2f", value.abs)
if value < 0
result + "-"
else
result + " "
end
end
def print_balance(account)
printf "Debits: %s\n", format_amount(account.debits)
printf "Credits: %s\n", format_amount(account.credits)
printf "Fees: %s\n", format_amount(account.fees)
printf " ———-\n"
printf "Balance: %s\n", format_amount(account.balance)
end
def format_amount(value)
result = sprintf("%10.2f", value.abs)
if value < 0
result + "-"
else
result + " "
end
end
def print_line(label, value)
printf "%-9s%s\n", label, value
end
def report_line(label, amount)
print_line(label + ":", format_amount(amount))
end
def print_balance(account)
report_line("Debits", account.debits)
report_line("Credits", account.credits)
report_line("Fees", account.fees)
print_line("", "———-")
report_line("Balance", account.balance)
end
format_amount
,如果想要變更標籤的格式,就去修改
report_line
。現在的這段代碼相比第一段,更加易於測試和擴展。
在作品上簽名
福利時間
本文分享自微信公衆號 - ZILLIZ(Zilliztech)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。