【命名規范】.NET中的枚舉類型,要以Enum結尾嗎?

首先要給它一個名字,然后你才能描述它。

cc775bf9559e8019a15570c22c19c5f3.jpeg

@圖片:北京的晚霞?@攝影師:劉先生

這個話題源于公司《.NET技術規范》中的一條:

【強制】枚舉聲明應以Enum結尾

我對此并不認同:

首先,引用一下微軟官方文檔中,關于枚舉命名的建議:

??請勿在枚舉類型名稱中使用“Enum”后綴。?

??請勿在枚舉類型名稱中使用“Flag”或“Flags”后綴。?

??請勿在枚舉值名稱上使用前綴(例如,“ad”用于 ADO 枚舉,“rtf”用于富文本枚舉等)。

https://learn.microsoft.com/zh-cn/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces

可見,微軟技術規范中,并不允許枚舉以Enum結尾。

微軟技術規范中,同樣也規定了某些命名需要有特定的結尾,如Attribute,Exception,Stream,對此小伙伴們是否也感到困惑,如何確定命名是否應以某個詞結尾?給代碼命名是程序開發中十分重要的工作之一,優秀的開發人員絕不會隨意用幾個字母去命名自己的代碼。

01

為什么枚舉類型不以Enum結尾

首先,在.NET中,枚舉和類、結構體是同一層級的概念,類和結構體都不以Class和Struct結尾,自然枚舉也不應該以Enum結尾。

另外,枚舉是一個包含特定數據的封閉數據集,供其他類調用,枚舉命名是否以Enum結尾都不影響對其含義的理解,加上后綴反倒顯得多余。

02

哪些類型應該有固定結尾

如果一個功能包含一組相關成員,成員職責明確,相互配合完成功能,那么不同成員應以其在整個功能中的作用,作為命名后綴,以使代碼結構清晰,易于理解。比如,領域驅動設計中,我們一般采用MediatR提供的事件式編程模型,其主要組成類包含命令和執行兩部分,因此將請求命名為xxxCommand,執行類命名為xxxHandler,代碼結構清晰。再比如,我們將Service作為業務邏輯處理類后綴,將Repository作為倉儲類的后綴,都是指示其所代表的特定功能。

03

總結

命名的基本原則是:“見名知意”。即命名能夠恰當的反映其含義,并保持簡潔。

我的思考是:

如果表示一個類型,則不需要固定后綴。

如果表示一個功能,則應該以某個特定詞做后綴。

代碼規范的意義在于,團隊中每個人都能很容易地閱讀其他人寫的代碼。在團隊開發中,遵循一致的代碼規范,能夠降低程序維護成本,提高代碼可用性,同時規范的制定應結合自己團隊的能力,認知及個性化需要。

借用馬丁.福勒的一句話:

任何人都可以編寫能被機器識別的代碼,?

優秀的程序員可以編寫人類理解的代碼。


喜歡的朋友可以點贊,轉發,關注

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279963.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279963.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279963.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux中防火墻(一)

一:前言防火墻,其實說白了講,就是用于實現Linux下訪問控制的功能,它分為硬件的或者軟件的防火墻兩種。無論是在哪個網絡中,防火墻工作的地方一定是在網絡的邊緣。而我們的任務就是需要去定義到底防火墻如何工作&#x…

macos安全性偏好設置_如何更改macOS系統偏好設置的布局

macos安全性偏好設置If you don’t care for the way the System Preferences appear in macOS, you can change them by hiding certain preference panels or by rearranging them alphabetically. 如果您不喜歡系統偏好設置在macOS中的顯示方式,則可以通過隱藏某…

機器視覺技術在表面缺陷檢測方面的發展趨勢

導讀:機器視覺技術在表面缺陷檢測方面的發展趨勢如何?很多人都不了解,據悉,目前工業中應用的機器視覺檢測絕大部分執行的是二維檢測任務,三維機器視覺檢測仍處于理論研究和試驗階段。除此之外,機器視覺檢測…

J.U.C之AQS

AQS是J.U.C的核心 AQS(AbstractQueuedSynchronizer)隊列同步器,AQS是JDK下提供的一套用于實現基于FIFO等待隊列的阻塞鎖和相關的同步器的一個同步框架。 同步器面向的是鎖的實現者,它簡化了鎖的實現方式,屏蔽了同步狀態管理、線程的排隊、等待…

.NET周報【12月第3期 2022-12-23】

由于眾所周知的原因,大佬們紛紛加入羊群,筆者也未能幸免,體驗下來這絕對不是普通感冒的癥狀,身體不適,熬了幾天,所以本周更新比較晚;另外精力有限,對于國際板塊只有鏈接沒有簡介&…

亞馬遜的vps多少錢一個月_如何查看您在亞馬遜上花了多少錢

亞馬遜的vps多少錢一個月Have you ever wondered how much you’ve spent at Amazon during your lifetime? Whether you’re feeling curious or just plain brave, there’s an easy way to find out. 您是否想過一生在亞馬遜上花了多少錢? 無論您是好奇還是勇敢…

JavaScript-client、offset、scroll、定時器

client offset scroll client、offset、scroll系列 他們的作用主要與計算盒模型,盒子的偏移量和滾動有關 clientTop 內容區域到邊框頂部的距離, 說白了, 就是邊框的高度 clientLeft 內容區域到邊框左部的距離, 說白了&#xff0…

Java 五大原則

1、單一職責 不論是在設計類,接口還是方法,單一職責都會處處體現,單一職責的定義:我們把職責定義為系統變化的原因。所有在定義類,接口,方法的時候。定義完以后再去想一想是不能多于一個的動機去改變這個類…

馬化騰發飆:很多業務該砍就砍,一批員工要被裁了

最近騰訊內部會議,馬化騰內部講話,頻頻上了熱搜。在會議中,馬化騰難得發飆表示:很多不盈利的業務該砍就砍。從網絡新聞報道來看,可能超過40個業務即將關掉,甚至包括幻核、QQ影音、看點快報、搜狗地圖、騰訊…

在ASP.Net和IIS中刪除不必要的HTTP響應頭

引入 每次當瀏覽器向Web服務器發起一個請求的時,都會伴隨著一些HTTP頭的發送.而這些HTTP頭是用于給Web服務器提供一些額外信息以便于處理請求。比如說吧。如果瀏覽器支持壓縮功能,則瀏覽器會發送Accept-Encoding HTTP頭,這樣一來服務器便知道…

SAP Customer Data Cloud(Gigya)的用戶搜索實現

我在Gigya前臺根據email搜索,輸入一個郵箱地址,回車,在Chrome開發者工具里觀察到到后臺的網絡請求: 這是一個post請求: __RequestVerificationToken 請求體: {"query":"SELECT * FROM accou…

C# ComboBox枚舉量綁定的 兩種方法

概述ComboBox綁定枚舉量的方法有很多&#xff0c;今天列舉比較常用的兩種&#xff0c;希望對讀者們一些幫助&#xff01;代碼講解前臺XMAL:<StackPanel><ComboBox Name"EvenType1" SelectedIndex"0" Margin"5"/><ComboBox Name&…

springboot + mybatis + gradle項目構建過程

1.從Spring boot官網根據需求下載腳手架或者到GitHub上去搜索對應的腳手架項目,D_iao ^0^ ? 文件目錄如下&#xff08;此處generatorConfig.xml 和 log4j2.xml文件請忽略&#xff0c;后續會講解&#xff09; 2.使用Mybatis代碼自動構建插件生成代碼 ? gradle 相關配置 // My…

基于間隔推送全量更新數據狀態的設計方法

2019獨角獸企業重金招聘Python工程師標準>>> 假如有個直播間&#xff0c;在數據有更新的時候&#xff0c;能及時反映在客戶端上。通信方式來說&#xff0c;有兩種&#xff1a; 1、拉取模式。 2、推送拉取模式&#xff08;或者純推送&#xff09; 拉取模式&#xff0…

Redis 哈希(Hash)

哈希hash又稱為散列、雜湊等&#xff0c;是將任意長度的輸入通過散列算法變換為固定長度的輸出&#xff0c;最終輸出也就是哈希值。這種轉換是一種壓縮映射。也就是說&#xff0c;散列值的空間通常要遠小于輸入控件&#xff0c;不同的輸入可能會散列成相同的輸出&#xff0c;所…

京東Vue組件庫NutUI 2.0發布:將支持跨平臺!

NutUI 是一套來自京東用戶體驗設計部&#xff08;JDC&#xff09;前端開發部的移動端 Vue 組件庫&#xff0c;NutUI 1.0 版本于 2018 年發布。據不完全統計&#xff0c;目前在京東至少有30多個 web 項目正在使用 NutUI。 經過一段時間緊鑼密鼓的開發&#xff0c;近期&#xff0…

macbook 下載時睡眠_MacBook進入睡眠狀態時如何自動使其靜音

macbook 下載時睡眠You open your MacBook to take notes in class or during a meeting, and your music starts playing. Loudly. Not only did you disrupt everyone, you also revealed your passion for 90’s boy bands to a room full of people who once respected you…

Mac 的mysql5.7沒有配置文件,如何解決only_full_group_by 問題

數據庫版本是5.7.19&#xff0c;在寫語句的時候&#xff0c;只要涉及ORDER BY,就會報錯&#xff0c; ERROR 1055 (42000): Expression #7 of SELECT list is not in GROUP BY clause and contains nonaggregated column postscan.verifyDelayLog.auditor which is not function…

Spring MVC 入門(一)

什么是 Spring MVC 學習某一樣東西之前&#xff0c;我們一定要大致知道這個東西是什么&#xff0c;能干什么&#xff0c;為什么要用它。 Spring MVC 是一個開源平臺&#xff0c;一個基于 Spring 的 MVC 框架&#xff0c;它支持基于 Java 開發 Web 應用程序。MVC 架構很利于開發…

開源網關 Apache APISIX 認證鑒權精細化實戰講解

關注公眾號并添加到“星標?”&#xff0c;防止錯過消息后臺回復【資料包】獲取學習資料GitOps 新手入門到專家進階實戰詳細教程作者錢勇&#xff0c;API7.ai 開發工程師&#xff0c;Apache APISIX Committer在當下云原生越發成熟的環境下&#xff0c;API 網關最核心的功能可以…