因此,我正在处理这个类,它应该通过web服务从供应商请求帮助文档。我试着把它命名为documententretriver, VendorDocRequester, DocGetter,但它们听起来不太对。最后,我在dictionary.com网站上浏览了半个小时,试图找到一个合适的词。

带着坏名字开始编程就像早上头发很糟一样,接下来的一天就会每况愈下。感觉我吗?


当前回答

对我来说,我不在乎一个方法或类名有多长,只要它是描述性的,并且在正确的库中。应该记住API的每个部分驻留在哪里的日子已经一去不复返了。

智能感存在于所有主要语言中。因此,当使用第三方API时,我喜欢使用它对文档的智能感知,而不是使用“实际的”文档。

考虑到这一点,我可以创建一个方法名,如

StevesPostOnMethodNamesBeingLong或Short

很长,但那又怎样。现在谁不用24英寸的屏幕呢!

其他回答

这对我来说通常是很自然的。我总是创建非常短的方法,从不超过6行Smalltalk代码(自动格式化),所以我说这个方法是关于什么的真的没有任何困难。

有时类名很困难,因为我想选择的单词在系统的某个地方正在使用,因为有时同一个单词在不同的上下文中有不同的含义。我希望在这些情况下,允许一些类似维基百科的语法,这样我就可以将我的类命名为“Task (To do list item)”。在这是合法的之前,我用了一个很大的德语风格的单词:ToDoListItemTask。您可能已经猜到了:我的方法名也可以很长。但我认为它们是可读的。

所以,在你的例子中,你的类是一个“getter”,或检索器,或其他什么。你确定这应该在课堂上模仿吗?难道供应商文档不应该请求自己吗?类似于vendorDoc.requestFrom(source);说出名字就容易多了,不是吗?

欢呼,

niko

不是真的。考虑到在编码中必须理解的所有困难,说命名类和方法是编程中最困难的事情之一是荒谬的。不要误解我的意思,有时很难想出一个好名字,但让我们现实一点。我可以说这是编程中最简单的部分之一。

我能感受到你的痛苦。:/

我希望有一种工具可以与数据字典(描述各种变量/方法名称的文件,我猜有点像javadoc)一起检查源代码,这样你就可以编写这样的代码:

class Battery 
{
   double I; // current
   double T; // temperature
   double V; // voltage
   double Q; // charge

   void update(double Inew, double dt) { I = Inew; Q += I*dt; }
   // ... etc ...
};

and the code-reviewing tool could do a number of different things to make it easier to view code in context, including display reminders that I = current (e.g. in a pane on the right-hand-side of the window it would display variable definitions/semantics/comments for the place in the code you are clicking on), or even allow you to do "virtual refactoring" where as a code reviewer you could rename something to your liking for readability/display reasons without actually changing the code stored on disk.

就像我喜欢自我描述名字一样,我讨厌读像BatteryFilteredCurrentInMilliamps这样的东西。通常在嵌入式系统中,我们是基于代数方程来建模对象的,这样的方程名称非常麻烦。(另一方面,“I”上面有一顶帽子,下标“d”和上标“*”是相当令人困惑的。)

我首先是一个EE /系统工程师,负责少量的软件工作,最后我真的不关心变量的名称,只要我有一种方便的方法来告诉它是什么,并将它映射到我自己的被控制系统的内部模型。

我坚持基本的:VerbNoun(参数)。例子:GetDoc (docID)。

没有必要太花哨。一年后,不管是你还是其他人,都很容易理解。

线程1:

function programming_job(){
    while (i make classes){
         Give each class a name quickly; always fairly long and descriptive.
         Implement and test each class to see what they really are. 
         while (not satisfied){
            Re-visit each class and make small adjustments 
         }
    }
}

线程2:

while(true){
      if (any code smells bad){
           rework, rename until at least somewhat better
      }
}

这里没有Thread.sleep(…)。