当前位置: 首页 > news >正文

.NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?

本文将解释在 .NET 技术栈中各种不同使用方式下 N E T 三个字母何时大写何时小写;前面的 “.” 什么时候加上,什么时候去掉,什么时候又使用 “dot”。


.NET 在技术文档中

如果你阅读过 https://docs.microsoft.com/zh-cn/dotnet/ 中的多数 .NET 技术文档,你应该几乎已经注意到了,在所有对大小写敏感的地方,NET 三个字母都是大写的。

“.NET” 是 .NET 技术栈名称的最官方写法了,如果能写出 “.NET” 且不会产生其他问题的地方,都应该使用 “.NET”。

.NET 文档标题
▲ 首先映入眼帘的,便是 .NET 技术栈中的所有文档标题

.NET 在代码中

.NET 在代码中并不符合 PascalCase 对命名规范的大小写建议。一般来说三个字母无论是单个单词还是多个单词的缩写,在 PascalCase 中都应该是首字母大写,其后全部小写。但在微软的代码中,NET 依然都是全大写的。

例如 Microsoft.NET.Sdk,去 dotnet/sdk - GitHub 上看,写法都是 NET 全大写的。

.NET 在标识符中

其实,我这里想说的标识符并不是指类名或方法名,那是上一节 .NET 在代码中 所说的内容。这里想说的是,当 .NET 作为用于识别 .NET 某种特征所用的标识符。一般这种标识符有一些命名限制(例如 “.” 开头经常就不符合限制)。

通常作为这种类型的标识符是大小写不敏感的,于是,微软在文档中对此的惯用写法是全部小写

例如,在 Url 中:

  • https://docs.microsoft.com/zh-cn/dotnet/

前面的 “.” 被改写成了 “dot”。

例如,在项目的目标框架中作为标识符使用时:

  • netstandard2.0
  • netcoreapp2.1
  • net472

这时,连前面的 “.” 都直接去掉了。

.NET 在文件系统中

在文件系统中,“.” 作为前缀的文件或文件夹在 OSX 和 Linux 上都是有特殊用途的,代表隐藏文件夹。这意味着如果没有特别的安排,尽量不要为常规文件夹使用 “.” 作为前缀。

这就意味着,如果你想建一个 .NET 文件夹,你应该去掉前面的 “.”。可是去掉之后的辨识度就太低了,看不出来是 .NET 技术栈。那么怎么命名呢?

这里给一些建议:

  • dotNET 适用于有大小写规范的命名中(例如为了跟 Windows/Android/iOS/OSX 这样的名称保持统一)
  • dotnet 适用于作为普通标识符的命名中(例如为了跟 windows/android/ios/osx 这样的名称保持统一)
  • net 适用于使用缩写的命名中(例如为了跟 win/android/ios/osx 这样的名称保持统一)

.NET 作为产品或机构名称的一部分

JetBrains 家的 .NET 团队很喜欢用 dot 作为软件名称的前缀,例如 dotCover、dotMemory、dotPeek、dotTrace。去 JetBrains: Developer Tools for Professionals and Teams 看看很快就能找到这几款软件的名称。

.NET Core 开源峰会使用 dnc 这样奇怪的缩写,代表 dotnet-core。

总结

合理的 .NET 写法有这些:

  • .NET 推荐
  • NET
  • dotNET
  • dotnet
  • net

如果与其他相关技术名词进行组合:

  • .NET Core
  • ML.NET
  • Microsoft.NET.Sdk
  • dotnet-standard
  • net472

相关文章:

  • 微软 Windows 系统检测网络连通性(用于显示感叹号)竟然是通过访问一个特殊网址来实现的
  • 如何根据一个绝对文件路径生成一个相对文件路径
  • 如何使用 MSBuild Target(Exec)中的控制台输出
  • C#/.NET 中推荐的 Dispose 模式的实现
  • Windows 10 四月更新,文件夹名称也能区分大小写?
  • WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆)
  • XML 的 XPath 语法
  • .NET 使用 XPath 来读写 XML 文件
  • 像黑客一样!Chrome 完全键盘操作指南(原生快捷键 + Vimium 插件)
  • 如何在 .NET 库的代码中判断当前程序运行在 Debug 下还是 Release 下
  • 在制作跨平台的 NuGet 工具包时,如何将工具(exe/dll)的所有依赖一并放入包中
  • WPF 使用 WindowChrome,在自定义窗口标题栏的同时最大程度保留原生窗口样式(类似 UWP/Chrome)
  • 理解 Roslyn 中的红绿树(Red-Green Trees)
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • 「面试题」如何实现一个圣杯布局?
  • Angular2开发踩坑系列-生产环境编译
  • JS字符串转数字方法总结
  • leetcode388. Longest Absolute File Path
  • mysql中InnoDB引擎中页的概念
  • Nodejs和JavaWeb协助开发
  • react 代码优化(一) ——事件处理
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 力扣(LeetCode)56
  • 入门到放弃node系列之Hello Word篇
  • 听说你叫Java(二)–Servlet请求
  • 推荐一个React的管理后台框架
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • linux 淘宝开源监控工具tsar
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 树莓派用上kodexplorer也能玩成私有网盘
  • 通过调用文摘列表API获取文摘
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (十一)手动添加用户和文件的特殊权限
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转载)Linux 多线程条件变量同步
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @media screen 针对不同移动设备
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [Android] Implementation vs API dependency
  • [Angular] 笔记 20:NgContent
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • [C++提高编程](三):STL初识
  • [docker]docker网络-直接路由模式
  • [ERROR] 不再支持目标选项 5。请使用 7 或更高版本
  • [Gym-102091E] How Many Groups
  • [JS]Math.random()随机数的二三事
  • [Linux] 进程间通信基础
  • [Linux]进程间通信(进程间通信介绍 | 匿名管道 | 命名管道)
  • [MySQL复制异常]Cannot execute statement: impossible to write to binary log since statement is in row for