2016-07-08 106 views
0

我与队友就以下事项发生了争执。我们需要将一个字符串中的符号解析为int(它总是一个数字),这个特殊的功能被用在很多地方。因此,可以这样做:何时创建新功能?

var a = int.Parse(str[i].ToString()); 

参数是:我们需要为此创建一个函数。

int ToInt(char c) { 
    return int.Parse(c.ToString()); 
} 

,可用于:

var a = ToInt(str[i]); 

我的观点是,建立这样一个功能是坏的:它使任何好处,除了输入几个字符以下(无,因为我们有自动完成),但这种做法增加了一个代码库,并通过引入附加功能使代码更加复杂。我的队友的理由是,这只能称为一种这样的功能更方便,在这种做法中没有什么不好的。

其实问题涉及到一个概念:什么时候可以(如果有的话)将2-3-4函数的组合与新函数包装在一起? 所以我想听听你的意见。

我强烈建议,这主要是根据个人喜好定义的。但是我也希望听到一些客观因素来为我们的项目中的这种情况定义一个公约。

+0

这是一个个人意见/机构特定的风格约定。 –

+0

''我想听听你的意见'' - 就是这样,这完全基于个人意见。例如,另一个选项可能是为'string'和/或'char'编写扩展方法,它可以被称为:'someString.ToInt()'或者可能是一个用于这种转换的类(不同于, 'Convert'类已经存在)。对此,真的没有全部的技术规则。队友们可能会对这个问题持不同意见,因为这是非常有效的,但完全是主观的原因。 – David

+0

我我并不是专家,但我相信你会为处理器做更多的工作来处理这个功能,因为它们会做同样的事情,再加上在堆栈中保存一些东西以及新功能的调用 – lazyy001

回答

-1

实际上,设计可以用许多方式来完成,这取决于整个软件的实际设计,可读性,易于重构和封装。这些事情每次都要由自己来考虑。

但在这种特殊情况下,我认为它能够更好地保持它没有的功能,并把它作为第一个例子的原因有很多:

  1. 它实际上的一行代码。
  2. 在性能上调用函数的开销将远远超过您从中获得的好处。
  3. 编译器本身可能会将它重新打包为单行调用,如果您将其设置为函数,虽然并非总是如此。

这样做的好处主要是如果你想添加错误检查,TryParse等...在函数中。

1

创建新的子程序/方法/功能的原因很多。以下是一些列表。

  1. 当子程序被多次调用时。
  2. 如果它使您的代码更易于阅读/理解。
  3. 个人喜好。