Tôi bắt đầu nhận ra rằng việc phát triển phần mềm là (trong số những thứ khác) là một quá trình liên tục tự đặt câu hỏi cho chính mình. Các câu hỏi liên quan đến chất lượng mã, tách các mối quan tâm, giảm thiểu sự phụ thuộc, ...
Nhưng câu hỏi chính là: bạn có thể đi bao xa mà không phải vào bệnh viện tâm thần?
Tôi đang xin việc mới. Hôm qua tôi đã ở với một chủ nhân tương lai có thể muốn kiểm tra khả năng lập trình của tôi. Một trong những bài tập là: giải thích những gì mã này làm. Tôi đã xem qua một số mã của ứng dụng (winforms trong vb.net) mà họ phát triển (đó là một ứng dụng hành chính cho bệnh viện). Điều này đã cho tôi cơ hội để thực sự thấy cách họ tiếp cận mọi thứ và nó khá thất vọng.
Vài ví dụ:
- Tôi đã thấy ở đâu đó: Gọi [chèn tên của chương trình con vào đây] -> Tôi bị đánh: đó không phải là thứ gì đó từ VB6?
- Họ có một bộ dữ liệu riêng, sử dụng ado.net, nhưng một phương thức tôi phải kiểm tra sẽ trả về một tập dữ liệu cho lớp gọi. Vì vậy, riêng biệt datalayer hay không, ứng dụng được gắn với ado.net (điều này cũng không bao giờ có thể là vấn đề nếu họ không bao giờ chuyển sang cách tiếp cận truy cập dữ liệu khác).
- Bộ dữ liệu đó được đọc nguyên trạng, vì vậy nó vẫn là một cách tiếp cận tập trung vào dữ liệu (tất nhiên, người ta có thể tranh luận mức độ logic / hành vi bạn có thể đặt trong các lớp như "Bệnh nhân" hoặc "LabAnalysisRequest".
- Tôi cũng tin rằng đã thấy việc xây dựng một truy vấn sql bằng cách nối chuỗi.
- Họ sử dụng các thủ tục được lưu trữ (mà theo tôi, có nghĩa là: phân tán logic)
- không đề cập đến lượt xem / bộ điều khiển: tất cả đều do hình thức điều khiển
- Điều xấu xí nhất tôi thấy là:
Nếu TestEnFE.IsTesting thì someVar = [một số giá trị được mã hóa cứng] khác someVar = [một số giá trị được lấy động] kết thúc nếu [phần còn lại của chức năng ở đây]
Tất cả đều khác với những gì tôi học được ở trường: lớp miền (thuyết bất khả tri), lớp kiên trì, lớp trình bày, kiểm tra đơn vị, ...
Vì vậy, tôi viết lại câu hỏi của mình: một người nên giáo dục cơ bản hay giáo điều như thế nào? Ở mức độ nào thì một lập trình viên nên tuân thủ các nguyên tắc của mình hoặc chỉ viết mã thực hiện công việc?