Tôi vẫn coi mình là một lập trình viên tập sự, vì vậy tôi luôn mong muốn học một cách "tốt hơn" cho lập trình thông thường. Hôm nay, đồng nghiệp của tôi đã lập luận rằng phong cách mã hóa của tôi thực hiện một số công việc không cần thiết và tôi muốn nghe ý kiến từ những người khác. Thông thường, khi tôi thiết kế một lớp bằng ngôn ngữ OOP (Thường là C ++ hoặc Python), tôi sẽ tách phần khởi tạo thành hai phần khác nhau:
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)
}
}
(hoặc, tương đương trăn)
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!"
Ý kiến của bạn về phương pháp này là gì? Tôi có nên hạn chế tách quá trình khởi tạo? Câu hỏi không chỉ giới hạn ở C ++ và Python và câu trả lời cho các ngôn ngữ khác cũng được đánh giá cao.