Are enumerated type implementations located inside or outside the Class implementation
design-patterns, enums, vb.net
Solution
No, both are fine. It's just a matter of preference and what makes the most sense for organization purposes. The only suggestion I have is that if the enum will be used as a input or output type in any other classes, I wouldn't put it inside this class. That would just be confusing.
Problem
Currently I have this code for my underlying model: ``` Public Enum vehicleType Car Lorry Bicycle End Enum Public Class TrafficSurveyA ' Declare the fields here. Private fCars As Integer Private fBicycles As Integer Private fLorries As Integer Public Sub New() ' An instance of TrafficSurveyA is created with all vehicle counts set to zero. fCars = 0 fBicycles = 0 fLorries = 0 End Sub Public Sub incrementCount(ByVal vehicle As vehicleType) ' Preconditions: none ' Postconditions: If vehicle is "Car", "Bicycle" or "Lorry" then 1 is added ' to the corresponding count. Otherwise nothing is done. Select Case vehicle Case vehicleType.Car : fCars = fCars + 1 Case vehicleType.Bicycle : fBicycles = fBicycles + 1 Case vehicleType.Lorry : fLorries = fLorries + 1 Case Else 'do nothing End Select End Sub Public Function getCount(ByVal vehicle As vehicleType) As String ' Preconditions: none ' Postconditions: If vehicle is "Car", "Bicycle" or "Lorry", the string ' representation of the corresponding count is returned. ' Otherwise the empty string is returned. Dim result As String result = "" Select Case vehicle Case vehicleType.Car : result = Convert.ToString(fCars) Case vehicleType.Bicycle : result = Convert.ToString(fBicycles) Case vehicleType.Lorry : result = Convert.ToString(fLorries) Case Else : result = "" End Select Return result End Function Public ReadOnly Property Vehicles() As String ' Preconditions: none ' Postconditions: The total number of vehicles recorded is returned. Get Return (fCars + fBicycles + fLorries).ToString() End Get End Property End Class ``` It seems that the `Enum` could just as easily be placed within the `TrafficSurveyA` Class like so... ``` Public Class TrafficSurveyA Enum vehicleType Car Lorry Bicycle End Enum ' Declare the fields here. Private fCars As Integer Private fBicycles As Integer Private fLorries As Integer Public Sub New() ' An instance of TrafficSurveyA is created with all vehicle counts set to zero. fCars = 0 fBicycles = 0 fLorries = 0 End Sub ... ... ``` The only difference then seems to be in the GUI code I need to use this `TrafficSurveyA.vehicleType.Lorry` rather than this `vehicleType.Lorry`. Both seem to run ok but is one of these implementations of the enum type wrong?