[英]Java static predicate naming convention
比方說,我想寫isSubdirectory
靜電功能在我的FileUtils
的輔助類。 這個函數看起來像:
class FileUtils {
public static boolean isSubdirectory(File child, File parent) {
// ...
}
}
或者,我可以翻轉parent
和child
的參數:
class FileUtils {
public static boolean isSubdirectory(File parent, File child) {
// ...
}
}
而且我無法選擇哪個順序是正確的...
在 Kotlin 中不會有任何疑問:只需聲明擴展函數:
fun File.isSubdirectory(parent: File) {
// ...
}
着眼於 kotlin,我發明了助記符規則:靜態函數中的第一個參數應該被視為this
(我不是第一個發明這個規則的。我看到很多人也在使用它)。 所以在這個例子中,我更喜歡將child
作為第一個參數。
但問題是:這條規則是否已經正式化並具有眾所周知的名稱? 我已經厭倦了向不知道它的人重復這條規則,我希望我可以簡單地通過它的名字來引用這條規則。
我不確定是否有名稱或任何真正的形式化。 充其量,第一個參數看起來像this
只是一個常見的約定。 雖然最罕見,但“最后一個”約定也存在,更多出現在 C 和早期 C++ 中(例如:stdio with fread/fwrite)
也存在基於參數類型的約定; 例如推廣以下訂單:
byte[]
也存在或多或少完全相反的順序。 其他約定也傾向於按類型對參數進行分組,更喜歡method(String, String, int, int)
而不是method(String, int, String, int)
。
如您所見,存在許多約定。 我不確定它們中的任何一個都有名字,而且 any 確實比其他任何一個都更常用。 例如,它不像camelCase 與snake_case 那樣清楚,幾乎沒有人反對。
您可以避免以下所有內容:按照對您來說最合乎邏輯和最直接的順序排列參數。 最重要的是在整個項目中保持一致,即不要寫isFileX(a,b)
然后是isFileY(b,a)
例如,如果這兩個方法在同一個類中,則isFileY(b,a)
。 如有疑問,請不要猶豫,詢問其他從事您項目的人,他們認為什么是最好的。
對於您的特定情況,由於“這個第一”規則,將孩子放在第一位是合理的,但將父母放在第一位也是合理的,因為這也是 GUI 框架中的常見約定。 由你來決定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.