麻烦为功能提供良好的名称

rlb*_*ond 20 language-agnostic coding-style

因此,我经常无法用简洁的名称描述函数.在重用的函数中通常不是问题,但通常需要将大型过程分解为子函数.通常,这些得到奇怪的名字,比如connectionsToAccessLineshandleWallVisionSplit或类似的东西.虽然这些功能只做一件事,但要为它们提供一个好名字是非常困难的,因为它们只是一个更大算法的一部分.

你在这种情况下做了什么?这非常令人沮丧.

Jim*_*ans 19

有时如果你不能提出一个好的函数名,那么这表明该函数没有一个漂亮,清晰的焦点,需要重构.如果它是一个类方法,也许类也需要重构.

但是找到最好的名字是非常值得的,因为它使你的代码更容易理解和使用.

更新:许多软件工程作者都谈到了命名的重要性.Henry F. Ledgard的编程谚语(1975)和Brian Kernighan以及PJ Plaugher的编程风格元素(1978)是早期的,仍然值得一读.史蒂夫麦康奈尔的精彩代码完整版(2005年第2版)是一个更新的例子,专门讨论了这一主题.

编程风格的元素部分地模仿了Strunk和White的Style of Elements,它实际上具有惊人的相关性.他们强调散文清晰,非常简洁,适用于我们的技术写作和评论(以及命名),但我一直认为它类似于我们在重构和改进代码时所做的工作.

  • 是.同意强烈. (2认同)

Ada*_*lls 14

我想在更大的算法的上下文中使用可笑的长方法名称,因为它减少了查看函数实现的需要.

ReadPropertiesFromFileThenWriteToSession这样的名称比ReadProps更好.

  • 是的,较长的名字肯定比Doaction(int id)这样简短,暧昧的名字更可取; 但也不要过火.如果你不能用一个词或短语描述方法正在做什么,那就把它分解成更多方法:) (8认同)
  • 如果你暴露了一个长时间保持不变的API,那么花些额外的时间来为后来的人们想一个好名字是值得的. (3认同)
  • ...虽然总的来说我只是同意你的意思,"只要有一个简短的名字,只要做一个长名称"就作为一个警告!:) (2认同)

Cam*_*ope 9

最近,伟大的Phil Karlton讽刺地说:计算机科学中只有两个难题 - 命名和缓存失效.我的经历使我相信这有很多道理.

将事物命名为一门艺术就像它是一门科学一样,因此没有任何硬性规定.也就是说,我有时会阅读Ottinger关于变量和类命名的规则,它有一些很好的启发式记忆.我最喜欢的一个是使用名词短语,例如 - person.getName()或bitTorrentClient.findPeersFromTracker().在这两种情况下,代码行的意图类似于英语中的短语.


jas*_*onh 6

有时您只需重新编写名称即可减少函数的名称长度.代替:

void RetrievePropertiesFromRemoteStore()
Run Code Online (Sandbox Code Playgroud)

你可以使用:

void RetrieveRemoteProperties()
Run Code Online (Sandbox Code Playgroud)

代替:

bool CheckToSeeIfUserIsAuthorized()
Run Code Online (Sandbox Code Playgroud)

使用:

bool IsUserAuthorized()
Run Code Online (Sandbox Code Playgroud)

减少它的另一种方法是重新考虑函数的作用.而不是像这样的一个函数:

void GetUserProfileAndSetUpSession()
Run Code Online (Sandbox Code Playgroud)

你可以有:

void GetUserProfile()
void SetupSession()
Run Code Online (Sandbox Code Playgroud)

  • 在IsUserAuthorized的情况下,如果它是类中的方法,则user.IsAuthorized()或service.IsAuthorized(user)甚至更好. (5认同)