【问题标题】:What's the better coding style in oop: one method with one parameter VS two methods without parameters?oop 中更好的编码风格是什么:一种方法有一个参数 VS 两种方法没有参数?
【发布时间】:2019-11-19 10:40:14
【问题描述】:
从 oop 的角度来看,清洁代码的更好方法是什么?有两个不同名称的相关方法或一个带有额外参数的通用方法?
(简化)示例:
1.) public void LogError() { ... }
public void LogWarning() { ... }
VS
2.) public void Log(LogType logType) { ... } //LogType.Error vs LogType.Warning
【问题讨论】:
标签:
coding-style
standards
【解决方案1】:
两者都是不错的选择。也许举几个例子可以更清楚。通常,我会尝试考虑谁将使用该库(我或其他人)以及我使用什么编程语言。
例如:
如果我使用 Java、C# 等强类型语言,那么我更喜欢 选择 2。
如果我使用 PHP 或 Python 之类的其他东西,那么我更喜欢 选择 1。
例如,如果我想为将要使用我的库的其他开发人员制作一个简化的界面,那么我也更喜欢选择 1。
例如,当您有 LogType 枚举时,这真的没关系。试着想想如何描述意图并说清楚。
注意可能多次混淆的布尔参数。例如:
public void SaveProduct(bool cache) { ... }
在这些情况下,选择 1 通常更好,因为很难理解布尔值的作用。 (它如何改变行为)此外,它通常告诉该方法正在执行两个不同的操作,因此可能有一种方法可以重构它。例如,将其拆分为两个方法,然后开发人员无需了解实现细节。