나는 여전히 자신을 도제 프로그래머라고 생각하기 때문에 항상 전형적인 프로그래밍을위한 "더 나은"방법을 배우려고합니다. 오늘날 동료는 코딩 스타일이 불필요한 작업을 수행한다고 주장했으며 다른 사람들의 의견을 듣고 싶습니다. 일반적으로 OOP 언어 (일반적으로 C ++ 또는 Python)로 클래스를 디자인 할 때 초기화를 두 개의 다른 부분으로 분리합니다.
class MyClass1 {
public:
Myclass1(type1 arg1, type2 arg2, type3 arg3);
initMyClass1();
private:
type1 param1;
type2 param2;
type3 param3;
type4 anotherParam1;
};
// Only the direct assignments from the input arguments are done in the constructor
MyClass1::myClass1(type1 arg1, type2 arg2, type3 arg3)
: param1(arg1)
, param2(arg2)
, param3(arg3)
{}
// Any other procedure is done in a separate initialization function
MyClass1::initMyClass1() {
// Validate input arguments before calculations
if (checkInputs()) {
// Do some calculations here to figure out the value of anotherParam1
anotherParam1 = someCalculation();
} else {
printf("Something went wrong!\n");
ASSERT(FALSE)
}
}
(또는 파이썬 동등)
class MyClass1:
def __init__(self, arg1, arg2, arg3):
self.arg1 = arg1
self.arg2 = arg2
self.arg3 = arg3
#optional
self.anotherParam1 = None
def initMyClass1():
if checkInputs():
anotherParam1 = someCalculation()
else:
raise "Something went wrong!"
이 접근법에 대한 귀하의 의견은 무엇입니까? 초기화 과정을 나누지 말아야합니까? 이 질문은 C ++ 및 Python에만 국한된 것이 아니라 다른 언어에 대한 답변도 높이 평가됩니다.