«single-responsibility» 태그된 질문

단일 책임 원칙 (Single Responsibility Principle)은 시스템의 각 모듈이 단일 특징 또는 기능, 또는 응집 기능의 집합을 책임 져야한다고 명시하고 있습니다. 그것을 넣는 또 다른 일반적인 방법은 각 모듈을 변경해야 할 이유가 하나만 있어야한다는 것입니다.

16
단일 책임 원칙을 사용할 때 "책임"은 무엇입니까?
"단일 책임 원칙"이 "한 가지 일만"을 의미하는 것은 아님이 분명합니다. 그것이 방법에 대한 것입니다. public Interface CustomerCRUD { public void Create(Customer customer); public Customer Read(int CustomerID); public void Update(Customer customer); public void Delete(int CustomerID); } 밥 마틴은 "수업은 변화해야 할 단 하나의 이유가 있어야한다"고 말했다. 그러나 SOLID를 처음 사용하는 프로그래머라면 …

12
인수의 유효성을 검사하는 생성자가 SRP를 위반합니까?
가능한 한 SRP (Single Responsibility Principle)를 준수하려고 노력하고 있으며 대의원에 크게 의존하는 특정 패턴 (SRP on Methods)에 익숙해졌습니다. 이 방법이 올바른지 또는 심각한 문제가 있는지 알고 싶습니다. 예를 들어, 생성자에 대한 입력을 확인하기 위해 다음 방법을 도입 Stream할 수 있습니다 ( 입력은 임의적이며 무엇이든 가능) private void CheckInput(Stream stream) { …

8
단일 책임 원칙을 어 기지 않고 클래스에 여러 개의 메소드를 가질 수있는 방법
단일 책임 원칙은 Wikipedia에서 다음 과 같이 정의 됩니다. 단일 책임 원칙은 모든 모듈, 클래스 또는 기능이 소프트웨어가 제공하는 기능의 단일 부분에 대해 책임을 가져야하며 책임은 클래스에 의해 완전히 캡슐화되어야한다는 컴퓨터 프로그래밍 원칙입니다. 수업이 하나의 책임만을 가져야한다면, 어떻게 하나 이상의 방법을 가질 수 있습니까? 각 방법이 서로 다른 책임을 가지지 …

11
이 클래스 디자인이 단일 책임 원칙을 위반합니까?
오늘 나는 누군가와 논쟁했다. 빈혈 도메인 모델이 아닌 리치 도메인 모델의 이점을 설명했습니다. 그리고 나는 간단한 수업으로 내 요점을 시연했습니다. public class Employee { public Employee(string firstName, string lastName) { FirstName = firstName; LastName = lastname; } public string FirstName { get private set; } public string LastName { get; …

8
“신의 대상”이 잘못되었다는 것을 어떻게 증명하거나 반증합니까?
문제 요약 : 간단히 말해서, 나는 코드베이스와 개발 팀을 물려 받았으며 대체 할 수 없으며 God Objects의 사용은 큰 문제입니다. 계속해서, 나는 우리가 일을 리팩토링하기를 원하지만 "더 쉬워지기 때문에"God Objects로 모든 것을하고 싶은 팀으로부터 푸시 백을 받고 있습니다. 이것은 리팩토링을 할 수 없다는 것을 의미합니다. 나는 수년간의 개발 경험을 인용하면서, …

7
단일 책임 원칙-코드 조각화를 피하려면 어떻게해야합니까?
팀 리더가 SOLID 개발 원칙을 강력하게 옹호하는 팀에서 일하고 있습니다. 그러나 그는 복잡한 소프트웨어를 집 밖으로 가져 오는 데 많은 경험이 부족합니다. 우리는 이미 매우 복잡한 코드 기반에 SRP를 적용한 상황에 처해 있으며, 이제는 매우 조각화되어 이해하고 디버깅하기가 어렵습니다. 개인 또는 보호 된 클래스 내의 메소드가 '변경 이유'를 나타내는 것으로 …

7
SOLID로 전환 한 후 엄청나게 증가한 클래스 수 관리 및 구성?
지난 몇 년 동안, 우리는 한 번에 몇 단계 씩 단계적으로 개선 된 코드로 점진적으로 전환 해 왔습니다. 우리는 마침내 적어도 SOLID와 비슷한 것으로 전환하기 시작했지만 아직 멀지 않았습니다. 전환 이후 개발자의 가장 큰 불만 중 하나는 이전에 모든 작업에서 5-10 개의 파일을 다루는 개발자 만 필요했던 수십 및 수십 …

8
수업의 실제 책임은 무엇입니까?
OOP에서 명사를 기반으로하는 동사를 사용하는 것이 합법적인지 궁금합니다. 이 기사 의 요점에 여전히 동의하지 않더라도이 훌륭한 기사를 발견 했습니다. 문제를 조금 더 설명하기 위해이 기사에서는 FileWriter클래스 가 없어야한다고 기술 하지만, 글쓰기는 액션 이므로 클래스 의 메소드 여야합니다 File. 루비 프로그래머가 FileWriter클래스를 사용하지 않을 가능성이 있기 때문에 (언제나 File.open파일에 액세스하는 방법 …

10
단일 책임 원칙의 적용
최근에는 사소한 건축 문제가 발생했습니다. 내 코드에는 다음과 같은 간단한 저장소가 있습니다 (코드는 C #입니다). var user = /* create user somehow */; _userRepository.Add(user); /* do some other stuff*/ _userRepository.SaveChanges(); SaveChanges 데이터베이스 변경 사항을 커밋하는 간단한 래퍼였습니다. void SaveChanges() { _dataContext.SaveChanges(); _logger.Log("User DB updated: " + someImportantInfo); } 그런 다음 …

8
업데이트 방법에 반환 유형을 추가하면 "단일 책임 원칙"을 위반합니까?
데이터베이스의 직원 데이터를 업데이트하는 방법이 있습니다. Employee"업데이트"개체 수단이 실제로 새로운 객체를 인스턴스화 있도록 클래스는 불변이다. 내가 원하는 Update방법의 새로운 인스턴스를 반환하는 Employee업데이트 된 데이터와 함께,하지만 지금부터 나는 방법의 책임이 말할 수있는 직원 데이터를 업데이트 할 수 및 새로운 데이터베이스에서 가져 Employee객체를 가 위반 않고, 단일 책임 원칙을 ? DB 레코드 …

11
각 반에 하나의 책임이 있는지 확인하십시오. 왜 그렇습니까?
Microsoft 문서, Wikipedia SOLID 프린시 페 기사 또는 대부분의 IT 설계자에 따르면 각 클래스마다 하나의 책임 만 갖도록해야합니다. 모든 사람이이 규칙에 동의하는 것 같으면이 규칙의 이유에 대해 아무도 동의하지 않는 것 같아 이유를 알고 싶습니다. 어떤 사람들은 더 나은 유지 보수를 인용하고, 어떤 사람들은 쉬운 테스트를 제공하거나 클래스를보다 강력하거나 안전하게 …

8
수업이 단일 책임 원칙을 충족하는지 확인하는 방법은 무엇입니까?
단일 책임 원칙은 높은 응집력 원칙을 기반으로합니다. 이 둘의 차이점은 높은 응집력을 가진 클래스는 밀접하게 관련된 일련의 책임을 특징으로하며 SRP를 준수하는 클래스는 하나의 책임 만 갖습니다. 그러나 특정 클래스가 일련의 책임을 지니고 있고 그에 따라 매우 응집력이 있는지 아니면 하나의 책임 만 가지고 SRP를 준수하는지 여부를 어떻게 결정합니까? 다시 말해서, …

12
“하나의 일”패러다임은 언제 해롭습니까?
이 게시물을 개선하고 싶습니까? 인용과 답변이 올바른 이유에 대한 설명을 포함하여이 질문에 대한 자세한 답변을 제공하십시오. 세부 사항이없는 답변은 편집하거나 삭제할 수 있습니다. 이 질문은 Software Engineering Stack Exchange에서 답변을 얻을 수 있기 때문에 Stack Overflow에서 마이그레이션 되었습니다. 8 년 전에 이주했습니다 . 인수를 위해 주어진 파일의 내용을 한 줄씩 …

10
단일 책임 원칙을 새 코드에 적용 할 수 있습니까?
이 원칙은 변경해야 할 한 가지 이유가있는 모듈로 정의됩니다 . 내 질문은, 코드가 실제로 변경되기 시작할 때까지 이러한 변경 이유를 알 수 없다는 것입니다. 거의 모든 코드에는 변경 될 수 있는 여러 가지 이유 가 있지만, 이러한 코드를 모두 예상하고이를 염두에두고 코드를 설계하려고하면 코드 품질이 매우 떨어질 수 있습니다. 코드 …


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.