Saya masih menganggap diri saya sebagai programmer magang, jadi saya selalu mencari cara belajar yang "lebih baik" untuk pemrograman tipikal. Hari ini, rekan kerja saya berpendapat bahwa gaya pengkodean saya melakukan beberapa pekerjaan yang tidak perlu, dan saya ingin mendengar pendapat dari orang lain. Biasanya, ketika saya mendesain kelas dalam bahasa OOP (Biasanya C ++ atau Python), saya akan memisahkan inisialisasi menjadi dua bagian yang berbeda:
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)
}
}
(atau, setara dengan python)
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!"
Apa pendapat Anda tentang pendekatan ini? Haruskah saya menahan diri dari pemisahan proses inisialisasi? Pertanyaannya tidak hanya terbatas pada C ++ dan Python, dan jawaban untuk bahasa lain juga dihargai.