[英]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.