.net - 常量类库——最佳实践?

标签 .net

我在内部应用程序上使用 .Net Reflector 来尝试了解以前的开发人员在做什么并学习。我从来没有得到过关于如何开发应用程序的实际指导,所以我从我可以的地方开始(万岁堆栈溢出)。话虽如此,我发现了一些让我感到困惑的东西。一个名为 WinConstant 的类库,包含以下代码。

这是我的实际问题:

  • 这有什么可能的用途?
  • 存储一个有什么值(value)
    类(class)中的一堆常量
    图书馆?
  • 这是否被认为是“最佳
    实践”?

  • 想法和指导表示赞赏!
    
    Public Class clsConstant
        Public Const cAccess As String = "Access"
        Public Const cAddress As String = "Address"
        Public Const cCancel As String = "Cancel"
        Public Const cCity As String = "City"
        Public Const cClear As String = "Clear"
        Public Const cClickOnMessage As String = "Click on any row in top pane to see the detail fields in the bottom pane."
        Public Const cClientID As String = "ClientID"
        Public Const cColon As String = ": "
        Public Const cComma As String = ","
        Public Const cContactID As String = "ContactID"
        Public Const cCounty As String = "County"
        Public Const cDash As String = "-"
        Public Const cDelete As String = "Delete"
        Public Const cDepartment As String = "Department"
        Public Const cError As String = "Error"
        Public Const cExec As String = "Exec"
        Public Const cFalse As String = "False"
        Public Const cFavorite As String = "Favorite"
        Public Const cFederal As String = "Federal"
        Public Const cFriday As String = "Friday"
        Public Const cfrmMain As String = "frmMain"
        Public Const cfrmModuleLogin As String = "frmModuleLogin"
        Public Const cfrmModuleSplash As String = "frmModuleSplash"
        Public Const cHelp As String = "Help"
        Public Const cHint As String = "Hint"
        Public Const cImagePath As String = "../../image"
        Public Const cIn As String = "In"
        Public Const cInformation As String = "Information"
        Public Const cInitialScreenID As String = "InitialScreenID"
        Public Const cInsert As String = "Insert"
        Public Const cJuvenileID As String = "JuvenileID"
        Public Const cLetter As String = "Letter"
        Public Const cManual As String = "Manual"
        Public Const cMasterID As String = "MasterID"
        Public Const cModuleID As String = "ModuleID"
        Public Const cModuleName As String = "ModuleName"
        Public Const cMonday As String = "Monday"
        Public Const cName As String = "Name"
        Public Const cNegative As String = "Negative"
         _
        Public Shared ReadOnly cNLowDate As DateTime = New DateTime(&H851055320574000)
         _
        Public Shared ReadOnly cNullDate As DateTime = New DateTime
        Public Const cNullDateString As String = "12:00:00 AM"
        Public Const cOfficeIDDefault As String = "01"
        Public Const cOne As Integer = 1
        Public Const cOut As String = "Out"
        Public Const cPopUp As String = "PopUp"
        Public Const cPositive As String = "Positive"
        Public Const cProcess As String = "Process"
        Public Const cProviderID As String = "ProviderID"
        Public Const cQuestion As String = "Question"
        Public Const cRead As String = "Read"
        Public Const cReferralID As String = "ReferralID"
        Public Const cReminder As String = "Reminder"
        Public Const cReport As String = "Report"
        Public Const cReportEngine As String = "ReportEngine"
        Public Const cReportEnginePath As String = "ReportEnginePath"
        Public Const cReportingServices As String = "ReportingServices"
        Public Const cReportServer As String = "ReportServer"
        Public Const cReportService As String = "ReportService"
        Public Const cReportServiceLocal As String = "ReportServiceLocal"
        Public Const cReportServiceServer As String = "ReportServiceServer"
        Public Const cSaturday As String = "Saturday"
        Public Const cSearch As String = "Search"
        Public Const cSelect As String = "Select"
        Public Const cSpace As String = " "
        Public Const cSQLLoginError As String = "SQL Server login/password invalid"
        Public Const cStart As String = "Select a module"
        Public Const cState As String = "State"
        Public Const cSubjectID As String = "SubjectID"
        Public Const cSunday As String = "Sunday"
        Public Const cThursday As String = "Thursday"
        Public Const cTooltipCancel As String = "Reset form data values back to before all manual changes."
        Public Const cTooltipClear As String = "Clears all data entry fields prior to an Insert"
        Public Const cTooltipClient As String = "Display a Client popup window."
        Public Const cTooltipClose As String = "Close this form"
        Public Const cTooltipDelete As String = "Delete the current record being displayed, no undo possible."
        Public Const cTooltipExe As String = "Initiate a batch process."
        Public Const cTooltipInsert As String = "Insert a brand new record"
        Public Const cTooltipSearch As String = "Perform a Search for values entered."
        Public Const cTooltipSelect As String = "Perform a Select for values entered."
        Public Const cTooltipUpdate As String = "Update an existing record"
        Public Const cTrue As String = "True"
        Public Const cTuesday As String = "Tuesday"
        Public Const cUnderscore As String = "____________________________________________________________"
        Public Const cUpdate As String = "Update"
        Public Const cWarning As String = "Warning"
        Public Const cWeb As String = "Web"
        Public Const cWednesday As String = "Wednesday"
        Public Const cWorkerID As String = "WorkerID"
        Public Const cZero As Integer = 0
        Public Shared strLongDate As String() = DateAndTime.Now.ToLongDateString.Split(New Char() { ","c })
        Public Shared strModuleMainStatusStripFormID As String = Nothing
    End Class
    

    最佳答案

    回到用 c 编写 windows 应用程序的时代,windows 中有类似的 #included 文件,其中包含 #defines 列表创建常量。各种 c 应用程序在它们自己的文件中模拟了这种方法。 “类(Class)”似乎是这种“c-ism”的“音译”。面向对象设计的基本原则是将代码和数据混合成相关的功能单元:对象。
    jfullerton写道:

    From a programming point of view, object-orientation involves program objects, encapsulation, inheritance, and polymorphism. The conceptual objects are modeled in the program code. Encapsulation keeps an object's data and methods that use the data together as part of the object.



    很明显,这个常量列表不符合 OO 实践,而是回到了过去。

    回答您的问题:
  • -- 这个类持有常量,就是
  • -- 老开发者可能是这样做的,因为这是他习惯做的
  • -- 这不是当前的最佳实践。

  • 当然,如果这是您的应用程序的一部分,您不能将其丢弃。相反,假设您使用 Test Driven Development 的当前最佳实践,这需要随着时间的推移进行重构。和 Refactoring

    关于.net - 常量类库——最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/497101/

    相关文章:

    c# - asp.net jqueryUI自动完成

    c# - 如何在两个 C# 应用程序之间创建状态加密连接?

    .net - VS解决方案,项目与DLL最佳实践

    c# - 使用 DateTime.TryParseExact 时有没有办法忽略日期时间字符串的一部分?

    c# - .Net Socket 增强以支持 ACK 和聊天?

    .net - 具有依赖于其他 NuGet 包的 NuGet 依赖项的 Visual Studio 模板

    c# - ASP.Net MVC 4 我需要延迟执行

    c# - Large Binary (byte[]) 通过WCF传输文件

    c# - 在 C# 中绑定(bind)到数据库的 DataGridView 中添加一行

    c# - 在 C# 中访问 android 设备