gpt4 book ai didi

.net - 继承 SortedDictionary - 这是好的编程习惯吗?

转载 作者:行者123 更新时间:2023-12-01 04:00:27 25 4
gpt4 key购买 nike

例如,假设我有大量关于数据库中大量日期的一组餐厅的数据,我需要分析/输出给用户。

因此,在我的代码中,我有一个自定义类,用于保存每个日期每个餐厅的数据 - 例如:

Public Class DateData
Public Property Var1 As Double = 0
Public Property Var2 As Double = 0
Public Property Var3 As Double = 0
Public Property Var4 As Double = 0

Public Sub Sub1()
....
End Sub

... etc ....
End Class

由于我为每个日期获取这些数据(并且由于日期顺序对我的计算很重要),我也设置了以下类(大部分工作/计算都在这里完成):
Public Class RestaurantData
Inherits SortedDictionary(Of Date, DateData)

Public Property Name As String
Public Property RestaurantLevelData1 As Double = 0
Public Property RestaurantLevelData2 As Double = 0

Public Sub New(ByVal strName As String, ByVal DatesList As List(Of Date))
_Name = strName
For Each daDate As Date In DatesList
Me.Add(daDate)
Next
End Sub

Public Overloads Sub Add(ByVal daDate As Date)
MyBase.Add(daDate, New DateData)
End Sub

Public Sub Sub1()
For i As Integer = 0 To Me.Keys.Count - 1
Dim daDate As Date = Me.Keys(i)
Me(daDate).Sub1()
.... etc ....
Next
End Sub

... etc ....
End Class

最后,由于这是针对大量餐厅的,我有一个类在餐厅级别保存此字典 - 例如:
Public Class RestaurantsDict
Inherits Dictionary(Of String, RestaurantData)

Public Overloads Sub Add(ByVal strName As String, ByVal Dates As List(Of Date))
MyBase.Add(strName, New RestaurantData(strName, Dates))
End Sub
End Class

好的,既然我已经设置好了,我有两个主要问题:
  • 这是设置它的好方法吗?
    我的原始代码由几十个 Dictionary(Of String, SortedDictionary(Of Date, Double)) 组成
    但我是一个相当新手的程序员,很想知道是否有更有效的架构来实现我想要实现的目标。
  • 我目前设置的方式很难调试 - 例如,Count我的属性(property)RestaurantData抛出 System.TypeLoadException 类型的异常.

  • 总体而言,该解决方案运行良好,但我想从中学习如何成为更好的 .Net 和 OOP 程序员。

    谢谢!

    最佳答案

    这基本上只是意见,所以它不太适合这个网站,但这是一个很好的问题。

    简单的回答是,完全没有错,但肯定没有必要,所以值不值得就看情况了。例如,通常没有理由使用 Integer 以外的任何东西。 , String , 或 Guid表示某种 ID。但是,如果担心有人很容易在 UserId 和 EmployeeId 之间混淆,那么为每个类型创建自己的特定类型可能是值得的,这样您就不会意外地传递错误的类型。但通常来说,你不会想添加额外的困惑层。

    对于泛型集合,我通常会说没有理由这样做,但是当您有列表列表时,我可以看到尝试稍微简化它的愿望,如果没有别的只是为了节省冗长的语法类型名称。

    考虑到这一点,如果泛型不存在(例如在 .NET 1.0 中),则必须像这样定义自己的自定义类型,很明显泛型只是为了方便。所以,如果使用 Dictionary(Of String, SortedDictionary(Of Date, Double)) 更方便的话,然后就这样做,但如果从中派生自己的类更方便,那么就这样做。

    关于.net - 继承 SortedDictionary - 这是好的编程习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13827671/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com