Categories
Tâm sự người viết mã

Nếu bắt buộc phải chọn Duplicate code và Multiple purposes hãy chọn Duplicate code

Đầu tiên tôi phải khẳng định rằng duplicate code và multiple purposes cả hai đều là những cách tiếp cận nên tránh trong lập trình, nhưng trong những tình huống cụ thể, bạn không có sự lựa chọn và bắt buộc chọn một trong hai, nên chọn cái nào?


Giả định rằng bạn đã biết về các nguyên tắc (luôn đúng và không cần chứng minh) trong lập trình như: SOLID; DRY và KISS. Duplicate code và Multiple purposes là 2 cách tiếp cận để giải quyết vấn đề mang tính tạm bợ và đều vi phạm các nguyên tắc về SOLID; DRY và KISS.


Duplicate code: một khối mã (code fragment) bị lặp đi lặp lại nhiều lần, điều này vi phạm nguyên tắc DRY (Don’t repeat yourself)


Multiple purposes: một hàm/phương thức/class làm nhiều nhiệm vụ hơn những gì nó nên làm, vi phạm nguyên tắc KISS (Keep It Simple Stupid) và Single responsibility principle trong SOLID)


Như đã đề cập ban đầu, nên chọn vi phạm nguyên tắc nào hơn nếu bắt buộc phải phi phạm các nguyên tắc đã nêu ở trên.

Khi một yêu cầu về tính năng được bổ sung

Categories
Tâm sự người viết mã

TÂM SỰ NGƯỜI VIẾT MÃ PHẦN 5: Nỗi đau của “tiện thể” trong lập trình

Comming soon…

Categories
Tâm sự người viết mã

TÂM SỰ NGƯỜI VIẾT MÃ PHẦN 4: Tầm quan trọng của Design Pattern

Một điều khá quan trọng trong lập trình khi xây dựng ứng dụng phức tạp, logic chồng chéo giữa các tính năng lẫn nhau, đó là bạn cần biết cách “xếp đẹp” các logic phần mềm vào đúng “vị trí” thích hợp để mã có cấu trúc mạch lạc, chặt chẽ, có nhiệm vụ cụ thể và rõ ràng, logic ở vị trí nào thì chỉ được phép kiểm soát hành vi nội trong phạm vi của vị trí đó, không được “tiện thể” thực hiện nhiệm vụ của vị trí khác, sự phân định rõ ràng này tùy thuộc vào hành vi/tính chất mà sẽ có các tên gọi khác nhau mà chung quy chúng được gọi là Design Pattern.


Steve Jobs có một câu nói rất nổi tiếng mà tôi rất tâm đắc

Design is not just what it looks like and feels like. Design is how it works”

Steve Jobs

Điều Jobs muốn nói ở đây là ngoài hình cảm ra thì thiết kế cũng có vai trò quan trọng trong cách mà cái gì đó hoạt động. Theo cách hiểu của tôi thì nó có thể là cách một công ty hoạt động (cấu trúc phòng ban, văn hóa, tầm nhìn), cách một đội bóng hoạt động (đội hình, lối chơi) và cách một phần mềm hoạt động cũng vậy, cũng cần có một thiết kế rõ ràng. Hãy tưởng tưởng một đội bóng không được phân chia vị trí rõ ràng, không có lối chơi hiệu quả thì liệu có thể chiến thắng? Tương tự trong phần mềm, nó cũng cần có các vị trí và lối chơi của riêng nó, nếu không thì phần mềm đó khó có thể đi đến chiến thắng và chinh phục được khách hàng.

Categories
Tâm sự người viết mã

TÂM SỰ NGƯỜI VIẾT MÃ PHẦN 3: Chị đẹp

Cách đây khoảng hơn 1 năm tôi có nhận một dự án freelance, là một trang web bán hàng. Vì là khách quen nên tôi chém giá khá cao, bởi thực sự không muốn làm gì thêm tại thời điểm đó. Kết quả là khách vẫn đồng ý làm mặc cho giá double so với nhiều freelancer khác (sau đây xin gọi vị khách này là chị đẹp) chị đẹp hỏi lý do sao giá cao hơn so với các dự án trước thì tôi bảo là do chất lượng. Ừ thì cũng đúng là chất lượng thật nhưng dự án này tìm người ít kinh nghiệm sẽ phù hợp hơn thay vì ưu tiên chất lượng. Khi mà việc sản phẩm đó ra thị trường bán được hàng hay không vẫn còn rất là mơ hồ, còn cái chất lượng mà tôi nói đến nó chỉ có giá trị khi sản phẩm đó thực sự đã là cái gì đó mang lại giá trị.


Không rõ chị đẹp ấp ủ dự án này trong bao lâu mà khi mình hỏi qua về thị trường chị ấy tiếp cận thì chị đẹp nói không được mạch lạc cho lắm (mình hỏi để suggest bên tích hợp cổng thanh toán) và rồi hỏi thêm các thứ liên quan khác, để đảm bảo chắc chắn không làm sai yêu cầu. Mình có cảm giác đây chỉ là dự án bộc phát chị đẹp nghĩ ra và rồi ấp ủ mà chưa dành nhiều thời gian cho nó, chưa nghiên cứu kỹ về thị trường, khách hàng và đối thủ.


Mấy dự án kiểu này thực sự rất rủi ro khi nhận vì khách có thể sẽ tìm ra cái gì đó sai trong ý tưởng kinh doanh, họ nhận thấy: “méo ăn thua, thôi nghỉ” thì lúc đó bạn thực sự ăn mứt rồi đấy, cho nên nếu muốn lấy tiền đủ từ những dự án như này bạn phải làm thật nhanh, lấy cọc 70%, nếu bạn có tâm thì hãy để cho khách hàng một thời gian để họ nghĩ kỹ hơn, đừng làm vội.


Dành cho người thích khởi nghiệp: Nếu ý tưởng khởi nghiệp của bạn nghĩ ra chỉ trong vòng một vài nốt nhạc thì đừng vội làm, đừng vội tìm freelancer, mà hãy dành thật nhiều thời gian cho nó, tìm bằng được các dấu hỏi chấm, đừng để bị ảo game, mất dấu hỏi lại thành out game!