2014-02-10 4 views
3

У меня есть интерфейс:Организация кода в проектах C#

public interface IMyObject 
{ 
} 

У меня есть абстрактный класс:

public abstract class MyObject : IMyObject 
{ 
} 

И у меня есть класс:

public class MyExtendedObject : MyObject 
{ 
} 

Есть много интерфейсов , тезисы и бетоны, подобные этому в моем проекте. Интересно, какой лучший сценарий для организации кода в пространстве имен (папки в проекте). Должен ли я помещать все связанные вещи в одну и ту же папку или создавать, например, пространство имен Base для абстрактных классов, пространство имен интерфейсов для интерфейсов и другое пространство имен для расширенных объектов?

+0

«Лучший» способ - это тот, который вы соглашаетесь с вашими товарищами по команде. – Alex

+0

Я сам разрабатываю проект, нет товарищей по команде. Но я также считаю, что размещение моей библиотеки в CodePlex является открытым исходным кодом, потому что я думаю, что стоит поделиться с людьми Земли навсегда. – mnyarar

ответ

5

best Способ субъективен и зависит от проекта.

Как suggession я бы сказал:

двигаться в отдельных интерфейсах папок и абстрактных классов, поэтому отделить их от конкретных классов реализации.

+ Absrtacts 
    -> IMyObject.cs 
    -> MyObject.cs 

+ Concrete 
    -> MyExtendedObject.cs 
3

Роберт C. Мартин (один из отцов-основателей Agile и теперь программное обеспечение движения Craftmanship) имеет целый разговор о том, что, что является really worth watching

Он основан на Ивар Якобсон Object Oriented Software Engineering: A Use Case Driven Approach.

Чтобы суммировать его в нескольких предложениях, ваша структура проекта должна отражать то, что она моделирует, а не технологию или конкретные языковые конструкции, которые вы используете. В случае ваших абстрактных/интерфейсных/конкретных классов это означает, что, используя структуру, в которую вы помещаете все свои абстрактные классы в папку/namspace/assembly, ваши конкретные классы в другой папке/пространстве имен/сборке не подходят (даже хотя очень часто можно найти проекты, в которых этот подход используется).

+0

Забавный парень, хорошее образовательное видео. Действительно стоит посмотреть. Но я думаю, что на этот счет нет здравого смысла, потому что ваш образ мышления отличается от того, как @Tigran. Я хотел бы получить больше комментариев, чтобы прийти к решению, спасибо. – mnyarar

Смежные вопросы