3

所以,我在编码,我基本上得到了这行代码

返回 parseInt(trim(elem.value.substring(1, elem.value.length)))

我在想,这是否合适,或者教授/雇主会因为允许这样一行代码而抨击我。

我觉得,虽然很整洁,但乍一看很难理解我在做什么。这不是那么糟糕 b/c 大多数调用都很常见(确保它是一个 int,修剪字符串以便转换工作并从字符串的开头删除不必要的信息)

但是,这样可以吗?或者我应该把它分解并注释每一行,以便未来的程序员更容易理解?喜欢...

var returnInt;
returnInt = elem.value.substring(1, elem.value.length); //remove $ symbol
returnInt = trim(returnInt); //trim whitespace
returnInt = parseInt(returnInt); //convert to int
return returnInt;

我不知道如何搜索这个,所以如果有什么东西我很抱歉。

4

3 回答 3

1

第一种格式很好,除了它会使像 NullPointerExceptions 这样的运行时异常难以调试(因为堆栈跟踪返回一个行号并且它可能在一行上)。因此,如果可能发生 NPE,请将其写成多行。

并且没有必要对每一行进行行尾注释。很明显 trim 和 parseToInt 对除了最新手的程序员以外的任何人都做了什么,而且一个简单的谷歌搜索无论如何都会出现这种情况。

于 2012-12-13T18:52:32.320 回答
1

只要您很好地格式化代码就可以了。例如,您的线路可能如下所示:

return parseInt(
         trim(
           elem.value.substring(1, elem.value.length)))

引用:

或者我应该把它分解并注释每一行,以便未来的程序员更容易理解?喜欢...

var returnInt;
returnInt = elem.value.substring(1, elem.value.length); //remove $ symbol
returnInt = trim(returnInt); //trim whitespace
returnInt = parseInt(returnInt); //convert to int
return returnInt;

这并不容易。过度的可变性是邪恶的;如果您的值具有不同的类型,这将不起作用。(糟糕,您可能正在使用动态类型语言,但是 var 的名称returnInt会产生误导,因为在某些程序状态下 is 确实不是Int)。请不要写这样的代码。

于 2012-12-13T18:55:34.370 回答
0

我不在乎教授或雇主会怎么想。除非它变得非常长,否则我总是将这些简单的语句内联,因为它们更容易理解和清晰。

我认为当你分解它时它看起来更复杂。我讨厌无用的断言和等号。我只会在我做一些非常复杂的事情并且需要对其他人和将来的我发表评论时才打破陈述。

在您的示例中,所有语句都非常简单明了。他们都不需要对普通开发人员进行评论或解释。

于 2012-12-13T18:49:10.153 回答