《GitHub精選》是我們分享Github中優質項目的欄目,包括技術、學習、實用與各種有趣的內容。本期推薦的是一個谷歌代碼風格指南項目——styleguide。
嚴謹的代碼風格能夠給人良好的印象和更佳的易讀性,在實際的開發中,經常會遇到這樣一種情況,明明是自己的代碼,過了一段時間就完全不認識了。所以,對于初學者來說,必須要建立良好的編程習慣,這其中就包括代碼風格,例如,首行縮進、關鍵詞之后加空格、駝峰命名法等等,由谷歌開源的項目styleguide提供了包括C++、C#、JAVA、Python等數10種編程語言的代碼風格,大家參考模仿就能輕松寫出高質量的代碼。
示例:
- C++ 風格指南
頭文件
所有頭文件都應該有#define保護以防止多次包含,為了保證唯一性,它們應該基于項目源代碼樹中的完整路徑
#ifndef FOO_BAR_BAZ_H_
#define FOO_BAR_BAZ_H_
...
#endif // FOO_BAR_BAZ_H_
命名規則
使用描述對象目的或意圖的名稱
class MyClass {
public:
int CountFooErrors(const std::vector<Foo>& foos) {
int n = 0; // 給定有限的范圍和上下文
for (const auto& foo : foos) {
...
++n;
}
return n;
}
void DoSomethingImportant() {
std::string fqdn = ...; // 眾所周知的完全限定域名的縮寫
}
private:
const int kMaxAllowedConnections = ...; // 在上下文中明確含義
};
函數聲明和定義
返回類型與函數名在同一行,參數盡量在同一行
ReturnType ClassName::FunctionName(Type par_name1, Type par_name2) {
DoSomething();
...
}
參數太多可以換行
ReturnType LongClassName::ReallyReallyReallyLongFunctionName(
Type par_name1, // 4 個空格縮進
Type par_name2,
Type par_name3) {
DoSomething(); // 2 個空格縮進
...
}
- Java 風格指南
包名
包名都是小寫的,連續的單詞簡單地連接在一起(沒有下劃線)
正確:com.example.deepspace
錯誤:com.example.deepSpace或 com.example.deep_space
類名
類名用大駝峰命名法,通常是名詞或名詞短語
Character或 ImmutableList
測試類的命名以它們正在測試的類的名稱開頭
HashTest或 HashIntegrationTest
方法名
方法名用小駝峰命名法,通常是動詞或動詞短語
sendMessage或 stop
- JavaScript風格指南
局部變量聲明
局部變量通常不會在其包含塊或類塊構造的開始處聲明;
每個局部變量聲明只聲明一個變量,不使用let a = 1, b = 2;此類的聲明
屬性注釋
必須記錄屬性類型,如果代碼提供了足夠的說明文檔,則可以省略私有屬性的描述
/** My class. */
class MyClass {
/** @param {string=} someString */
constructor(someString = 'default string') {
/** @private @const {string} */
this.someString_ = someString;
}
}
其他:
GitHub: https://github.com/google/styleguide