# 5. Vẻ đẹp nằm trong sự đơn giản

Có câu nói của Plato mà tôi nghĩ khá tốt cho mọi dev nếu họ nắm được và giữ lấy cho mình:

Beauty of style and harmony and grace and good rhythm depends on simplicity.

Bằng một câu duy nhất, nó nói lên được giá trị mà chúng ta, những người dev, nên hướng tới. Có vài thứ chúng ta vẫn phấn đấu khi code:

  • Dễ đọc
  • Dễ bảo trì
  • Tốc độ phát triển
  • The elusive quality of beauty (không biết dịch sao cho hay)

Plato nói với chúng ta rằng cái nhân tố quyết định tới những thứ nói trên đó là sự đơn giản. Code đẹp là code thế nào? Câu hỏi này khá là chủ quan. Sự nhận thức về cái đẹp dựa vào kiến thức của mỗi người, giống như là nhân thức về mọi thứ của chúng ta đều dựa vào kinh nghiệm, kiến thức đã qua. Những người học nghệ thuật thì có nhận thức khác (hoặc cách tiếp cận khác) về vẻ đẹp so với người học khoa học. Những người học nghệ thuật thường tiếp cận về vẻ đẹp trong phần mềm bằng cách so sánh phần mềm với tác phẩm nghệ thuật, trong khi người học khoa học có xu hướng nói về tính đối xứng và tỉ lệ vàng, cố gắng thu gọn mọi thứ về các công thức. Theo kinh nghiệm của tôi, sự đơn giản là căn cứ cho phần lớn các lập luận của cả hai bên.

Hãy nghĩ về những đoạn code mà bạn đã học. Nếu bạn chưa dành thời gian xem code người khác, dừng đọc bài này lại và tìm code ai đó mà đọc. Tôi nói nghiêm túc đó! Tìm trên web các code tuỳ ngôn ngữ bạn muốn, viết bởi ai đó nổi tiếng, chuyên gia đã được biết đến.

Bạn quay lại rồi à? Tốt. Chúng ta đang nói đến đâu nhỉ? À ừ… Tôi tìm được đoạn code hợp với tôi, và tôi nghĩ là nó đẹp, có một vài điểm chung. Điểm chung nhất là tính đơn giản. Tôi thấy rằng không quan trọng toàn bộ hệ thống phức tạp ra sao, mỗi phần riêng cần phải được làm đơn giản: những object đơn giản đảm nhiệm một việc đơn giản chứa các method cũng đơn giản với những cái tên có ý nghĩa. Có người nghĩ viết những method ngắn 5–10 dòng là khoai, và khó làm đối với một vài ngôn ngữ, nhưng tôi nghĩ sự xúc tích như vậy là một mục tiêu đáng có.

Cái mà tôi muốn nói là code đẹp là code đơn giản. Mỗi phần nhỏ được làm đơn giản, đảm nhiệm công việc đơn giản, có các mỗi quan hệ đơn giản với các phần khác trong hệ thống. Đây là cách mà chúng ta giữ cho hệ thống có thể bảo trì được trong thời gian dài, cùng với code test được, đơn giản, sạch sẽ, đảm bảo tốc độ phát triển trong toàn bộ thời gian hoạt động của hệ thống. Vẻ đẹp được sinh ra và tìm thấy trong sự đơn giản.