Ich betrachte mich immer noch als Programmiererlehrling und bin immer auf der Suche nach einem "besseren" Weg für typisches Programmieren. Heute hat mein Kollege argumentiert, dass mein Codierungsstil unnötige Arbeit leistet, und ich möchte Meinungen von anderen hören. Wenn ich eine Klasse in OOP-Sprache entwerfe (normalerweise C ++ oder Python), teile ich die Initialisierung normalerweise in zwei verschiedene Teile auf:
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)
}
}
(oder Python-Äquivalent)
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!"
Wie ist Ihre Meinung zu diesem Ansatz? Sollte ich den Initialisierungsprozess nicht aufteilen? Die Frage ist nicht nur auf C ++ und Python beschränkt, sondern es werden auch Antworten für andere Sprachen geschätzt.