专栏首页walterlv - 吕毅的博客C# 中委托实例的命名规则

C# 中委托实例的命名规则

我们知道一个类中的属性应该用名词或名词性短语,方法用动词或动宾短语;但是委托的实例却似乎有一些游离。因为在 .NET 中委托代表的是一个动作,既可以把它看作是名词,也可以看作是动词。在用法上,既可以像属性和变量一样被各种传递,也可以像一个方法一样被调用。

那么委托实例的命名,应该遵循属性和变量的命名,还是遵循方法的命名呢?


委托的实例可以当作属性或者变量使用:

var action = () => Console.WriteLine("walterlv is a 逗比");

委托的实例也可以当作方法使用:

var action = () => Console.WriteLine("walterlv is a 逗比");
action();

于是委托的命名方式迁就名词还是动词呢?

在微软的官方文档 Naming Guidelines 中提到了 .NET 中约定的命名方式。对于委托的命名,实际上只在 Names of Type Members 中提到了,不过提及的实际上是事件型的委托,而不是一般的委托实例。然后,微软其他地方的官方文档中也没有单独提及委托的命名方式。

为了弄清楚第一方代码的命名规则,我去 https://source.dot.net/ 上找了一些使用了委托的代码,然后发现,对于 ActionFunc 系列委托的命名,有以下这些(部分名称只保留了后缀进行合并):

使用名词的:

  • action
  • function
  • callback
  • continuation
  • method
  • factory
  • valueFactory
  • creator
  • valueGetter
  • initializer
  • _target
  • attributeComputer
  • argumentsPromise
  • taskProvider

使用动词的:

  • getSource

使用缩略词的:

  • localInit

我把缩略词单独拿出来,是因为缩写了以下就看不出来这到底是缩自名词还是缩自动词。

基本上可以确定:

委托实例的命名是 —— 一个表示动作的名词


参考资料

本文会经常更新,请阅读原文: https://blog.walterlv.com/post/name-convention-of-delegate-instance.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (walter.lv@qq.com)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 关闭模态窗口后,父窗口居然跑到了其他窗口的后面

    发布于 2018-02-05 05:58 更新于 2018-06...

    walterlv
  • 使用一句 git 命令将仓库的改动推送到所有的远端

    git 支持一个本地仓库包含多个远端(remote),这对于开源社区来说是一个很重要的功能,可以实时获取到最新的开源代码且能推送到自己的仓...

    walterlv
  • 让你的 Windows 应用程序在任意路径也能够直接通过文件名执行

    我们可以在任何路径下输入 explorer 来启动资源管理器,可以在任何路径中输入 git 来使用 git 相关的命令。我们知道可以通过将一个应用...

    walterlv
  • 从零开始一起学习SLAM | 掌握g2o顶点编程套路

    在《g2o: A general Framework for (Hyper) Graph Optimization》这篇文档里,我们找到那张经典的类结构图。也就...

    用户1150922
  • 最新全球计算机科学排名:清华力压CMU占据人工智能第一!北大排第四

    新智元
  • REST 入门介绍

    dudu的 HttpClient + ASP.NET Web API, WCF之外的另一个选择 讨论的人很多,说明RESTful API也开始在.NET 社区中...

    张善友
  • CTF实战2 Web应用构成

    https://www.bilibili.com/video/av22207039/

    用户1631416
  • git 命令行上传项目

    小编第一次成功上传的项目地址: https://github.com/xiguazaitortoise/xor-matlab/blob/master/p_or....

    瓜大三哥
  • MIT等研究团队开发交互式工具ATMSeer,可查看和控制AutoML系统工作流程

    麻省理工学院等研究团队开发了一种交互式工具,首次让用户看到并控制自动机器学习系统的工作方式。目的是建立对这些系统的信心,并找到改进它们的方法。

    AiTechYun
  • Unity Application Block 1.2 学习笔记

    昨天花了一天时间,把IOC/DI的相关文章以及Unity相关的一些文章基本在园子里搜了个遍 先给出几篇不错的文章链接: Unity Application Bl...

    菩提树下的杨过

扫码关注云+社区

领取腾讯云代金券