2017-01-02 1 views
0

실제로 루프에서 처리 할 수없는 일부 개체를 초기화해야한다고 가정 해보십시오. 생성자를 호출하기 전에 제공된 데이터로 어떻게 든 객체를 초기화해야합니다. 마지막으로 다른 메소드에서 해당 객체를 사용하려고합니다. 가독성과 컴퓨팅 가능성을 위해서 A 또는 B 방법을 권장할까요?루프 할 수없는 initilazations의 코드 가독성

방법 A

DummyObject a = new DummyObject("fs", "y", 4); 
a.init("aseas", true); 
otherObjectA.addDummy(a); 

DummyObject b = new DummyObject("qwe", "sd", 8); 
b.init("a4rhs", true); 
otherObjectA.addDummy(b); 

DummyObject c = new DummyObject("j", "xe", 39); 
c.init("as", false); 
otherObjectB.addDummy(c); 

DummyObject d = new DummyObject("qw", "k", 12); 
d.init("sdfs", true); 
otherObjectC.addDummy(d); 
// and so on... 

방법 B

DummyObject a = new DummyObject("fs", "y", 4); 
DummyObject b = new DummyObject("qwe", "sd", 8); 
DummyObject c = new DummyObject("j", "xe", 39); 
DummyObject d = new DummyObject("qw", "k", 12); 

a.init("aseas", true); 
b.init("a4rhs", true); 
c.init("as", false); 
d.init("sdfs", true); 

otherObjectA.addDummy(b); 
otherObjectB.addDummy(c); 
otherObjectA.addDummy(a); 
otherObjectC.addDummy(d); 
// and so on... 
+0

및 방법'C'는 아마 중복 코드 – SomeJavaGuy

+0

@KevinEsche 사실을 줄이기 위해 방법을 쓸 수 있지만 그 수 결과적으로 많은 매개 변수를 필요로하는 메소드가 생기고 결과적으로 코드를 읽을 수 없게됩니다. –

+0

빌더 패턴을 찾아 보면 더 읽기 쉽습니다. 또한 init() 메소드는 저를 위해 냄새를 풍깁니다. – abbath

답변

4

1) 왜 DummyObject 생성자에서 초기화() 메소드의 내용을 포함하지? 생성자의 목적은 객체의 초기화이기도합니다.

2)이 방법을 유지하는 좋은 이유가 있고 이런 식으로 구성하는 방법에는 여러 DummyObjects이있는 경우,보다 읽기 쉬운 솔루션은 각 DummyObject하는 단계를 초기화를 수행하고 추가하는 방법을 추출하는 것입니다 :

나는 방법 A 사용합니다 :

DummyObject d = new DummyObject("qw", "k", 12); 
d.init("sdfs", true); 
otherObjectC.addDummy(d); 

을 나는 그런 새로운 방법을 추출합니다 :

DummyContainer container = ...; 
    DummyObject a = new DummyObject("qw", "k", 12); 
    initAndAddDummyObject(a, container,"sdfs",true); 
    ... 
    DummyObject b = new DummyObject("qwe", "sd", 8); 
    initAndAddDummyObject(b, container,"a4rhs", true); 

    ... 

public void initAndAddDummyObject(DummyObject source, DummyContainer container, String initString, boolean initBoolean){ 
     source.init(initString, initBoolean); 
     container.addDummy(source); 
    } 
2

내가 당신에게 t의 관계를 말할 기운을 오브젝트를 사용하고 Facade 패턴을 사용하여 기능을 함께 그룹화하거나 인터페이스 만 그룹화 할 수 있습니다. 여기서 볼 수있는 것은 Factory 패턴을 사용하여 객체를 만들고 초기화 할 수 있다는 것입니다. 내가 무엇을 원하는 당신에게 달려 코드의 가독성, 약

는 방법 A.