저는 최근에 객체로 프로그래밍을 시작했으며 좋은 습관을 일찍 학습하려고합니다.C# OOP 파일 구조?
내 응용 프로그램이 두 개의 파일하는 것입니다 구조 계획 방법 :
이 에게1 : Program.cs -이 파일은 응용 프로그램의 주요 논리를 포함
2 : Class.cs -이 파일이 포함됩니다 모든 클래스 정의
아주 간단합니다. 내가 더 이상 파일을 가져야하는지 궁금해서 ... 글쎄, 내게 말해.
도움을 주시면 감사하겠습니다.
저는 최근에 객체로 프로그래밍을 시작했으며 좋은 습관을 일찍 학습하려고합니다.C# OOP 파일 구조?
내 응용 프로그램이 두 개의 파일하는 것입니다 구조 계획 방법 :
이 에게1 : Program.cs -이 파일은 응용 프로그램의 주요 논리를 포함
2 : Class.cs -이 파일이 포함됩니다 모든 클래스 정의
아주 간단합니다. 내가 더 이상 파일을 가져야하는지 궁금해서 ... 글쎄, 내게 말해.
도움을 주시면 감사하겠습니다.
일반적으로 각 클래스에는 자체 파일이 있어야합니다.
Program.cs -이 파일은 메인 클래스가이 파일에 있음을 의미하는이 말을 할 때 나는 가정하고 응용 프로그램
에 대한 주요 로직이 포함됩니다. (응용 프로그램의 진입 점이있는 클래스). 논리의 여러 부분을 분리하여 가장 합리적인 클래스에 배치해야합니다. 지향 설계를 반대 할
링크 : 네임 스페이스에 대한
http://www.csharphelp.com/2006/05/designing-object-oriented-programs-in-c/
http://www.informit.com/articles/article.aspx?p=101373
동의합니다. * 특정 클래스에서만 사용되는 작은 도우미 클래스가있는 경우 * 일반적으로 도움이되는 클래스와 동일한 파일에 그 클래스를 배치합니다. –
@ 로버트, 나도 때때로 그 일을하는 버릇이있다. 시나리오에 따라 다르지만, 일반적으로 각 클래스의 규칙을 따르는 것은 자체 파일입니다. – kemiller2002
각 클래스 파일마다 다른 네임 스페이스가 있어야합니까?서로 다른 파일에서 동일한 네임 스페이스를 사용할 수 있습니까? – sooprise
내 유일한 제안 클래스의 각 클래스를 파괴하는 것입니다. cs를 ClassName.cs라는 자체 파일에 저장합니다. .
버그를 찾아서 쉽게 해결할 것입니다.
각 파일의 코드가 적어 지지만 문제가되는 코드를 찾기가 어렵습니다.
각 클래스에는 많은 클래스가 포함 된 .cs 파일이 아닌 자체 파일이 있어야합니다. 나는 그것을 시도하지 않고 있지만, 당신의 IDE가 이것을 집행 할지도 모른다.
따라야 할 원칙은 각 클래스 (또는 2.0+ 앱의 경우 부분 클래스) 당 하나의 파일을 갖는 것입니다. 중요하지 않은 응용 프로그램의 경우에는 이 아니며은 모든 클래스 정의를 단일 파일로 유지해야합니다.
당신은 여기에 당신이 시작하는 데 도움이되는 몇 가지 기본 사항은 다음 guidelines
각 파일을 자신의 파일에 넣으라고 말하는 페이지를 직접 가리키면 더 나은 링크가 될 것입니다. :) –
에보고해야한다.=)
솔루션의 아키텍처는 다음과 같습니다 수업 (파일 당 하나 개의 클래스)에 대한
이(등, EntityFramework, NHibernate 등) 베어
개체 지향 디자인은 개체의 모든 실용적인 측면을 일반화하여 비즈니스 개체의 최상위 클래스로 가져 오려고합니다. 예 :
// File: Person.cs
public class Person {
public string Name { get; set; }
public string Number { get; set; }
// Some other general properties...
}
// File: Customer.cs
public class Customer : Person {
public Customer() {
Orders = new List<Order>();
}
public string CreditTerm { get; set; }
public IList<Order> Orders { get; }
}
// File: Contact.cs
public class Contact : Person {
public long PhoneNumber { get; set; }
public long FaxNumber { get; set; }
}
// File: Supplier.cs
public class Supplier : Person {
public Supplier() {
Salesperson = new Contact();
}
public Contact Salesperson { get; }
}
각 프로젝트의 의미를 지정하는 것이 좋습니다. 의는 예를 들어 고객 관리를위한 응용 프로그램 보자
MyCompany.MyCustomerMgmtSoftware.Domain <을 = 비즈니스 클래스를 포함해야한다이 프로젝트는
MyCompany.MyCustomerMgmtSoftware.Data <이 =이 프로젝트는 데이터에 액세스하기위한 클래스를 포함해야한다있는 정의 귀하의 DBRM.
MyCompany.MyCustomerMgmtSoftware < =이 프로젝트는 일반적으로
MyCompany.MyCustomerMgmtsoftware.Mappings <이 = 예를 들어, 자 NHibernate를 사용하는 동안이 프로젝트는 (당신의 매핑 파일을 포함해야합니다.
이
이 도움을 않는 GUI를 포함 ?
함께 동의하지 않을 수 있습니다 : 1 귀하의 클래스에 대한 하나의 프로젝트 (파일 당 하나의 클래스); 2 데이터 액세스를위한 하나의 프로젝트. BL & DA 프로젝트를 여러 프로젝트로 나누고 싶을 것입니다. 예를 들어 Employees.Biz, Employees.Data, Customers.Biz, Customers.Data (각 proj에 여러 개의 클래스가있을 수 있다고 가정)를 각각의 프로젝트 (4 개)로 분리합니다. 모든 BL을 하나의 엄청난 어셈블리로 쌓아 올리면 필요하지 않은 코드를 포함하기 위해 별도의 Apps가 필요합니다. 누군가는 필요하지 않은 코드 섹션에서 코드를 깨뜨릴 수 있지만 dll을 참조하기 때문에 앱이 손상됩니다. –
이것은 훌륭한 참고 자료이지만 첫 번째 프로그램을 작성중인 사람에게는 TMI 일 가능성이 높습니다. 그리고 그들이 ERP 시스템을 구축하지 않는다면 다른 모든 사람들에게. –
@Chris L : 동의합니다. 나는 작은 프로젝트를 위해 이렇게 말했다. 내 의견으로는, 당신은 잠시 동안 언급하고있는 것과 같은 거대한 프로젝트를 준비하지 못할 것입니다. 소규모 회사 주택 프로젝트의 경우이 구조로 충분할 수 있습니다. –
Program.cs에 "main logic"이 포함되어 있으면 클래스에 무엇이 들어 있을까요? GUI 또는 콘솔에서 로직을 래핑하는 "main"함수가 무엇일까? – harpo