Это правильная реализация класса и инициализация?
Я обнаружил, что моя практика кодирования в последнее время ослабевает - и заметил, что у меня возникают некоторые вредные привычки - обычно из-за отсутствия мотивации с моей стороны (вероятно, это вызвано, но бессмысленным характером поставленных передо мной задач) - так что дать себе Я решил написать сам, что должно быть очень простым, базовым классом. Вот:
public class Customer
{
public string CUSTOMERNAME;
public List<Site> sites = new List<Site>();
public Customer()
{
}
public void AddSite(Site location)
{
sites.Add(location);
}
}
public class Site
{
public string SITENAME;
public Address SITEADDRESSDETAILS;
public string SITEPHONENUMBER;
public Site(string sitename, Address siteaddress, string tel)
{
SITENAME = sitename;
SITEADDRESSDETAILS = siteaddress;
SITEPHONENUMBER = tel;
}
}
public class Address
{
public List<string> address = new List<string>();
public Address() {
}
public void AddAddressDetail(string line)
{
address.Add(line);
}
}
Теперь все работает, но я просто не могу не чувствовать, что все можно сделать лучше. Я проверил это с помощью следующего кода:
static void Main(string[] args)
{
Customer customer = new Customer();
customer.CUSTOMERNAME = "Max Hammer Ltd";
Address addy = new Address();
addy.AddAddressDetail("1 Edgerail Close");
addy.AddAddressDetail("Greenbushes");
addy.AddAddressDetail("Bluehill");
addy.AddAddressDetail("Surrey");
addy.AddAddressDetail("RH0 6LD");
Site surreyOffice = new Site("Surrey Office", addy, "01737 000000");
addy = new Address();
addy.AddAddressDetail("6 Electric Avenue");
addy.AddAddressDetail("Brixton");
addy.AddAddressDetail("London");
addy.AddAddressDetail("SW4 1BX");
Site brixtonOffice = new Site("Brixton Office", addy, "020 7101 3333");
customer.AddSite(surreyOffice);
customer.AddSite(brixtonOffice);
Console.WriteLine(customer.CUSTOMERNAME);
int numberOfSutes = customer.sites.Count;
for (int i = 0; i < numberOfSutes; i++)
{
Console.WriteLine(customer.sites[i].SITENAME);
foreach (string line in customer.sites[i].SITEADDRESSDETAILS.address)
{
Console.WriteLine(line);
}
Console.WriteLine(customer.sites[i].SITEPHONENUMBER);
}
Console.ReadKey();
}
Я не доволен своим Main
класс, и я не уверен, почему - хотя он делает то, что я хочу. Любые советы, указатели?
1 ответ
Решение
Вот как я это вижу:
- Используйте свойства с соответствующей заглавной буквы.
- Почему список строк в Адресе?! [Удалено].
- Прямой доступ к спискам.
public class Customer
{
public string Name {get; set;}
public List<Site> Sites { get; set; }
public Customer()
{
Sites = new List<Site>();
}
}
public class Site
{
public string Name { get; set; }
public string Address { get; set; }
public string PhoneNumber { get; set; }
public Site(string sitename, string siteaddress, string tel)
{
Name = sitename;
Adress = siteaddress;
PhoneNumber = tel;
}
}
public class Program
{
static void Main(string[] args)
{
Customer customer = new Customer();
customer.Name = "Max Hammer Ltd";
string address = string.Join(Environment.NewLine, new []{"1 Edgerail Close", "Greenbushes", "Bluehill"
, "Surrey", "RH0 6LD"});
Site surreyOffice = new Site("Surrey Office", address, "01737 000000");
address = string.Join(Environment.NewLine, new[]{"1 Edgerail Close", "Greenbushes", "Bluehill"
, "Surrey", "RH0 6LD"});
Site brixtonOffice = new Site("Brixton Office", address, "020 7101 3333");
customer.Sites.Add(surreyOffice);
customer.Sites.Add(brixtonOffice);
Console.WriteLine(customer.Name);
foreach (Site site in customer.Sites)
{
Console.WriteLine(site.Name);
Console.WriteLine(site.Adress);
Console.WriteLine(site.PhoneNumber);
Console.WriteLine();
}
Console.ReadKey();
}
}