У меня есть вопрос, касающийся соглашений об именах в C #, который, как мне кажется, не рассматривается ни в большинстве ранее заданных вопросов, ни в обычных ресурсах, таких как Правила именования MSDN . Большинство существующих соглашений об именах фокусируются на платформах и вещах, которые будут использоваться другими классами. Это может быть немного по-другому.
Как назвать класс, в котором находится Main ()? И как это относится к своему суперклассу?
Допустим, вы начинающий программист и создаете небольшое приложение, похожее на этот сайт. Вы могли бы сделать что-то вроде этого.
// the title of the class happens to be the title of the project
namespace FogCreek {
public class StackOverflow {
public static Main() { ... }
}
}
Но затем вы решаете реорганизовать ваши внутренние ресурсы по мере роста и создать больше сайтов стеков, каждый из которых копирует свое собственное пространство имен.
namespace FogCreek.StackSites.StackOverflow {
public class WhatDoICallThis : StackExchangeSite {
public static Main() { ... }
}
}
// elsewhere in another project...
namespace FogCreek {
public class StackExchangeSite {
...
}
}
Я не решаюсь назвать его StackOverflow, потому что его полное имя будет FogCreek.StackSites.StackOverflow.StackOverflow. Разве это не избыточно?
Кроме того, должен ли StackExchangeSite находиться в своем собственном пространстве имен в FogCreek? Или это должно быть "выше", чем проекты, которые вытекают из этого?
Company.Foobar.Widget
-> Company.Foobar.Widget.RoundWidget
-> Company.Foobar.Widget.SquareWidget
vs
Company.Foobar.Widget.BaseWidget
-> Company.Foobar.Widget.RoundWidget
-> Company.Foobar.Widget.SquareWidget
Я не одобряю второй вариант, потому что я не помню никаких расширяемых классов, которые используют слово «Base».