Cách đây một thời gian, tôi đã hỏi một câu hỏi trên SO về một cái gì đó được viết bằng C ++, nhưng thay vì nhận được câu trả lời cho vấn đề này, các ý kiến đã phát điên lên theo phong cách mã hóa của tôi, ngay cả khi tôi chỉ ra rằng đó là một đoạn mã WIP và rằng tôi có nghĩa là để làm sạch nó sau này khi tôi có trường hợp cơ sở đang chạy. (Tôi đã nhận được rất nhiều phiếu bầu xuống và tôi đã quyết định rút câu hỏi, vì đại diện của tôi trên SO đã gần hết rồi)
Nó làm cho tôi tự hỏi tại sao mọi người chấp nhận một thái độ cứng rắn như vậy "bạn là một người không biết nói, hãy tự đi". Tôi đã bị buộc tội viết C ++ như thể đó là Java. Một cái gì đó mà tôi không thể hiểu, và điều đó vẫn gây trở ngại cho tôi.
Tôi đã lập trình bằng một vài ngôn ngữ OOP trong một số năm nay, mặc dù trong các khoảng thời gian. Tôi chọn ngôn ngữ để sử dụng theo các thư viện có sẵn và môi trường thực thi tối ưu cho công việc hiện tại. Tôi chấp nhận các mẫu thiết kế trong mã OOP và tôi khá tự tin rằng việc sử dụng các mẫu của tôi là âm thanh và OO khôn ngoan, tôi có thể giữ riêng mình. Tôi hiểu hộp công cụ OOP, nhưng chọn chỉ sử dụng các công cụ khi tôi nghĩ rằng nó thực sự cần thiết, không chỉ sử dụng một thủ thuật gọn gàng để hiển thị trí thông minh mã hóa của tôi. (Điều mà tôi biết không phải là đỉnh cao, nhưng tôi nghĩ cũng không ở mức n00b).
Tôi thiết kế mã của mình trước khi tôi viết một dòng duy nhất. Để xác định các bài kiểm tra, tôi liệt kê các mục tiêu của một lớp nhất định và các tiêu chí kiểm tra mà nó phải tuân thủ. Vì việc tạo sơ đồ tuần tự dễ dàng hơn và sau đó viết mã, tôi đã chọn viết các bài kiểm tra của mình sau khi giao diện trở nên rõ ràng.
Tôi phải thừa nhận rằng trong đoạn mã tôi đã đăng trong câu hỏi, tôi vẫn đang sử dụng con trỏ, thay vì sử dụng con trỏ thông minh. Tôi sử dụng RAII bất cứ khi nào tôi có thể. Tôi biết RAII thích hợp có nghĩa là bảo vệ chống lại nullpointers, nhưng tôi làm việc tăng dần. Đó là một công việc đang tiến triển và tôi có nghĩa là để làm sạch nó sau. Cách làm việc này đã bị lên án mạnh mẽ.
Theo quan điểm của tôi, tôi nên có một ví dụ hoạt động trước để tôi có thể xem liệu trường hợp cơ sở có phải là một cách suy nghĩ khả thi hay không. Tôi cũng tình cờ nghĩ rằng việc làm sạch mã là một cái gì đó điển hình cho giai đoạn tái cấu trúc của agile, sau khi trường hợp cơ sở đã được chứng minh. Tôi phải thừa nhận rằng mặc dù tôi đang dần đạt được tiêu chuẩn Cxx, tôi thích sử dụng những gì tôi hiểu, thay vì mạo hiểm sử dụng các khái niệm mà tôi chưa nắm vững trong mã sản xuất. Thỉnh thoảng tôi thử những thứ mới, nhưng thường trong các dự án chơi mà tôi có ở bên, chỉ với mục đích đó.
[sửa] Tôi muốn làm rõ rằng đề xuất của gnat [1] đã không xuất hiện trong tìm kiếm tôi đã làm trước khi tôi bắt đầu đặt câu hỏi của mình. Tuy nhiên, mặc dù đề nghị của anh ấy không bao gồm một khía cạnh của câu hỏi, câu hỏi mà anh ấy liên kết không trả lời được câu hỏi của tôi, chỉ là một phần của câu hỏi. Câu hỏi của tôi là nhiều hơn về phản ứng tôi nhận được cho phong cách mã hóa của mình và các khía cạnh chuyên nghiệp trong việc xử lý các phong cách mã hóa khác nhau và mức độ kỹ năng (rõ ràng). Với câu hỏi trước đây của tôi về SO và đây là câu trả lời. [/chỉnh sửa]
Câu hỏi sau đó là: tại sao lại chế giễu ai đó không sử dụng phong cách mã hóa của bạn?
Các vấn đề / phân khu trong tay đối với tôi là:
- Tại sao nó sẽ là một thực tiễn lập trình tồi khi sử dụng mã dễ bị lỗi hơn trong các tình huống nguyên mẫu, nếu việc tái cấu trúc làm cho nó mạnh hơn sau đó?
- Làm thế nào để chương trình được viết bằng C ++ giống như được viết bằng Java? Điều gì làm cho nó trở thành một chương trình tồi, (xem xét rằng tôi đã chỉ ra ý định của phong cách hiện tại và công việc được lên kế hoạch để cải thiện?)
- Làm thế nào tôi trở thành một chuyên gia tồi nếu tôi chọn sử dụng một cấu trúc được sử dụng trong một mô hình lập trình nhất định (ví dụ OOP / DP)?
[1] Phát triển nhanh và lỗi, sau đó sửa lỗi hoặc chậm, cẩn thận cho từng dòng mã?
int
biến riêng biệt để theo dõi độ dài thực tế.