Hi các bạn, mình là TUẤN. Hiện đang là một Full-stack Web Developer tại Tokyo😊.
Nếu bạn thích bài viết, xin hãy cho mình 1 upvote và follow blog để ủng hộ mình có thêm động lực ra thêm nhiều bài viết hay hơn trong tương lại nhé.😊
Trong bài này mình sẽ giới thiệu với các bạn về một thuật ngữ IT rất thú vị, đó là "Convention over Configuration" hay còn được biết đến với tên gọi tiếng Việt là "Quy ước trên Cấu hình". Bài viết này sẽ giúp các bạn hiểu rõ hơn về khái niệm này và cách áp dụng nó vào trong lập trình.
1. Convention over Configuration là gì?
"Convention over Configuration" (CoC) là một phương pháp thiết kế phần mềm nhằm giảm bớt những quyết định mà lập trình viên phải đưa ra, nhưng không làm mất đi tính linh hoạt của phần mềm. Ý nghĩa cốt lõi của CoC là chỉ những điểm không tuân theo quy ước (convention) mới cần phải được lập trình viên chỉ định cụ thể.
Ví dụ, nếu trong mô hình (model) của bạn có một lớp (class) tên là "Sales", thì theo quy ước, tên của bảng tương ứng trong cơ sở dữ liệu sẽ mặc định là "sales". Chỉ khi bạn muốn đặt tên cho bảng đó là "products_sold" thì bạn mới cần phải viết code để chỉ định điều đó.
Nếu những quy ước mà công cụ bạn đang sử dụng đã triển khai phù hợp với những gì bạn muốn, thì bạn không cần phải viết file cấu hình. Chỉ khi những quy ước đó không phù hợp với ý muốn của bạn, bạn mới cần phải cấu hình để đạt được hành vi mong muốn.
1.1. Lý do ra đời của Convention over Configuration
Trước đây, nhiều framework phần mềm có nhiều file cấu hình với nhiều mục cấu hình khác nhau. Những file và mục cấu hình này dùng để định nghĩa thông tin cụ thể cho dự án, từ việc ánh xạ URL đến lớp - bảng trong cơ sở dữ liệu, và bao gồm nhiều thông tin khác. Tình trạng có nhiều file cấu hình với nhiều mục cấu hình khác nhau thường chỉ ra rằng thiết kế ứng dụng quá phức tạp.
Ví dụ, Hibernate, một mapper persistence nổi tiếng của Java, trong các phiên bản đầu tiên yêu cầu viết file XML để mô tả việc ánh xạ giữa các trường trong lớp entity và các bảng trong cơ sở dữ liệu. Tuy nhiên, hầu hết thông tin này có thể không cần thiết nếu có một quy ước đơn giản như đặt tên lớp và bảng cơ sở dữ liệu giống nhau, và tên trường và tên cột cũng giống nhau. Trong các phiên bản sau của Hibernate, file cấu hình XML này đã bị loại bỏ và quy ước mà mình vừa nói đã được áp dụng. Khi cần phải thoát khỏi quy ước này, lập trình viên có thể sử dụng annotation của Java để viết định nghĩa của riêng mình.
1.2. Sử dụng Convention over Configuration
Nhiều framework hiện đại đã áp dụng phương pháp "Convention over Configuration". Ví dụ như Ruby on Rails, Kohana, Grails, Grok, Zend Framework, CakePHP, Symfony, và nhiều framework khác.
2. Kết luận
"Convention over Configuration" là một phương pháp thiết kế phần mềm hiệu quả, giúp giảm bớt công việc cấu hình cho lập trình viên mà không làm mất đi tính linh hoạt của phần mềm. Bằng cách áp dụng những quy ước mặc định, lập trình viên chỉ cần tập trung vào những điểm đặc biệt không tuân theo quy ước. Điều này giúp tăng tốc độ phát triển và giảm bớt khả năng mắc lỗi.
3. FAQs - Câu hỏi ôn tập
1. Convention over Configuration có nghĩa là gì?
Convention over Configuration (CoC) là một phương pháp thiết kế phần mềm nhằm giảm bớt những quyết định mà lập trình viên phải đưa ra, nhưng không làm mất đi tính linh hoạt của phần mềm. Ý nghĩa cốt lõi của CoC là chỉ những điểm không tuân theo quy ước (convention) mới cần phải được lập trình viên chỉ định cụ thể.
2. Tại sao lại cần sử dụng Convention over Configuration?
Sử dụng Convention over Configuration giúp giảm bớt công việc cấu hình cho lập trình viên mà không làm mất đi tính linh hoạt của phần mềm. Bằng cách áp dụng những quy ước mặc định, lập trình viên chỉ cần tập trung vào những điểm đặc biệt không tuân theo quy ước. Điều này giúp tăng tốc độ phát triển và giảm bớt khả năng mắc lỗi.
3. Convention over Configuration được sử dụng trong những framework nào?
Nhiều framework hiện đại đã áp dụng phương pháp "Convention over Configuration". Ví dụ như Ruby on Rails, Kohana, Grails, Grok, Zend Framework, CakePHP, Symfony, và nhiều framework khác.
4. Convention over Configuration có ưu điểm gì?
Convention over Configuration giúp giảm bớt công việc cấu hình cho lập trình viên mà không làm mất đi tính linh hoạt của phần mềm. Bằng cách áp dụng những quy ước mặc định, lập trình viên chỉ cần tập trung vào những điểm đặc biệt không tuân theo quy ước. Điều này giúp tăng tốc độ phát triển và giảm bớt khả năng mắc lỗi.
5. Convention over Configuration có nhược điểm gì không?
Convention over Configuration có thể gây khó khăn cho những người mới học lập trình vì họ phải hiểu và nhớ những quy ước mặc định. Tuy nhiên, một khi đã quen với những quy ước này, họ sẽ thấy rằng việc lập trình trở nên nhanh chóng và ít lỗi hơn.
English Version
Hey there, today I'm going to introduce you to a really cool IT term, "Convention over Configuration". This article will help you understand this concept better and how to apply it in programming.
1. What is Convention over Configuration?
"Convention over Configuration" (CoC) is a software design approach that reduces the decisions that programmers have to make, without losing the flexibility of the software. The core idea of CoC is that only the points that do not follow the convention need to be specifically defined by the programmer.
For example, if you have a class named "Sales" in your model, then by convention, the name of the corresponding table in the database will default to "sales". Only when you want to name that table "products_sold" do you need to write code to specify that.
If the conventions that the tool you are using have been implemented in line with what you want, then you do not need to write a configuration file. Only when those conventions do not align with your intentions do you need to configure to achieve the desired behavior.
1.1. Why Convention over Configuration was created
In the past, many software frameworks had many configuration files with various configuration items. These files and configuration items were used to define specific information for the project, from mapping URLs to classes - tables in the database, and including many other pieces of information. The situation of having many configuration files with various configuration items often indicates that the application design is too complex.
For example, Hibernate, a famous Java persistence mapper, in its early versions required writing an XML file to describe the mapping between fields in the entity class and tables in the database. However, most of this information may be unnecessary if there is a simple convention like naming the class and database table the same, and the field and column names are also the same. In later versions of Hibernate, this XML configuration file was removed and the convention I just mentioned was applied. When it is necessary to escape from this convention, programmers can use Java's annotation to write their own definitions.
1.2. Using Convention over Configuration
Many modern frameworks have applied the "Convention over Configuration" method. Examples include Ruby on Rails, Kohana, Grails, Grok, Zend Framework, CakePHP, Symfony, and many other frameworks.
2. Conclusion
"Convention over Configuration" is an effective software design method, reducing configuration work for programmers without losing the flexibility of the software. By applying default conventions, programmers only need to focus on the special points that do not follow the convention. This helps speed up development and reduce the likelihood of errors.
3. FAQs - Review Questions
1. What does Convention over Configuration mean?
Convention over Configuration (CoC) is a software design method that reduces the decisions that programmers have to make, without losing the flexibility of the software. The core idea of CoC is that only the points that do not follow the convention need to be specifically defined by the programmer.
2. Why do we need to use Convention over Configuration?
Using Convention over Configuration reduces configuration work for programmers without losing the flexibility of the software. By applying default conventions, programmers only need to focus on the special points that do not follow the convention. This helps speed up development and reduce the likelihood of errors.
3. Which frameworks use Convention over Configuration?
Many modern frameworks have applied the "Convention over Configuration" method. Examples include Ruby on Rails, Kohana, Grails, Grok, Zend Framework, CakePHP, Symfony, and many other frameworks.
4. What are the advantages of Convention over Configuration?
Convention over Configuration reduces configuration work for programmers without losing the flexibility of the software. By applying default conventions, programmers only need to focus on the special points that do not follow the convention. This helps speed up development and reduce the likelihood of errors.
5. Are there any disadvantages to Convention over Configuration?
Convention over Configuration can be challenging for those new to programming because they have to understand and remember the default conventions. However, once they are familiar with these conventions, they will find that programming becomes quicker and less error-prone.
日本語版
この記事では、非常に興味深いIT用語、「Convention over Configuration」について紹介します。これはベトナム語で「Quy ước trên Cấu hình」とも呼ばれています。この記事を読むことで、この概念についてより深く理解し、それをプログラミングにどのように適用するかを学ぶことができます。
1. 「Convention over Configuration」とは何ですか?
「Convention over Configuration」(CoC)は、ソフトウェア設計の手法で、プログラマが行うべき決定を減らすことを目指していますが、それでいてソフトウェアの柔軟性を損なうことはありません。CoCの核心的な意味は、規約(convention)に従わない部分だけがプログラマによって具体的に指定されるべきであるということです。
例えば、あなたのモデルに「Sales」というクラスがある場合、規約によれば、対応するデータベースのテーブル名はデフォルトで「sales」になります。テーブルの名前を「products_sold」にしたい場合だけ、その指定をするためのコードを書く必要があります。
あなたが使用しているツールが既にあなたが望むことに適合する規約を実装している場合、設定ファイルを書く必要はありません。規約があなたの意図に合わない場合だけ、望む動作を得るために設定が必要になります。
1.1. 「Convention over Configuration」の誕生の理由
以前は、多くのソフトウェアフレームワークには多くの設定ファイルと設定項目がありました。これらのファイルと設定項目は、プロジェクトの具体的な情報を定義するために使用され、URLからクラス - データベースのテーブルへのマッピングから、その他多くの情報を含んでいました。多くの設定ファイルと設定項目があるという状況は、通常、アプリケーションの設計が複雑すぎることを示しています。
例えば、Javaの有名な永続性マッパーであるHibernateは、初期のバージョンでは、エンティティクラスのフィールドとデータベースのテーブルとの間のマッピングを記述するためにXMLファイルを書くことを要求していました。しかし、ほとんどの情報は、クラスとデータベースのテーブルの名前を同じにする、フィールドと列の名前も同じにするという単純な規約があれば不要かもしれません。Hibernateの後のバージョンでは、このXML設定ファイルは廃止され、私が話した規約が適用されました。この規約から逸脱する必要がある場合、プログラマはJavaのアノテーションを使用して自分の定義を書くことができます。
1.2. 「Convention over Configuration」の使用
多くの現代のフレームワークは、「Convention over Configuration」の手法を採用しています。例えば、Ruby on Rails、Kohana、Grails、Grok、Zend Framework、CakePHP、Symfonyなどがあります。
2. まとめ
「Convention over Configuration」は効果的なソフトウェア設計の手法で、プログラマの設定作業を減らすことができ、それでいてソフトウェアの柔軟性を損なうことはありません。デフォルトの規約を適用することで、プログラマは規約に従わない特殊な部分にだけ集中することができます。これにより、開発速度を上げ、エラーの可能性を減らすことができます。
3. FAQs - レビューのための質問
1. 「Convention over Configuration」は何を意味しますか?
「Convention over Configuration」(CoC)は、ソフトウェア設計の手法で、プログラマが行うべき決定を減らすことを目指していますが、それでいてソフトウェアの柔軟性を損なうことはありません。CoCの核心的な意味は、規約(convention)に従わない部分だけがプログラマによって具体的に指定されるべきであるということです。
2. なぜ「Convention over Configuration」を使用する必要がありますか?
「Convention over Configuration」を使用することで、プログラマの設定作業を減らすことができ、それでいてソフトウェアの柔軟性を損なうことはありません。デフォルトの規約を適用することで、プログラマは規約に従わない特殊な部分にだけ集中することができます。これにより、開発速度を上げ、エラーの可能性を減らすことができます。
3. 「Convention over Configuration」はどのフレームワークで使用されていますか?
多くの現代のフレームワークは、「Convention over Configuration」の手法を採用しています。例えば、Ruby on Rails、Kohana、Grails、Grok、Zend Framework、CakePHP、Symfonyなどがあります。
4. 「Convention over Configuration」の利点は何ですか?
「Convention over Configuration」は、プログラマの設定作業を減らすことができ、それでいてソフトウェアの柔軟性を損なうことはありません。デフォルトの規約を適用することで、プログラマは規約に従わない特殊な部分にだけ集中することができます。これにより、開発速度を上げ、エラーの可能性を減らすことができます。
5. 「Convention over Configuration」の欠点は何ですか?
「Convention over Configuration」は、プログラミングを新たに学ぶ人々にとっては難しく感じるかもしれません。なぜなら、彼らはデフォルトの規約を理解し、覚える必要があるからです。しかし、一度これらの規約に慣れてしまえば、プログラミングがより迅速でエラーが少なくなることを彼らは感じるでしょう。
Cuối cùng
Như thường lệ, mình hy vọng bạn thích bài viết này và biết thêm được điều gì đó mới.
Nếu bạn thích bài viết, xin hãy cho mình 1 upvote và đăng ký để ủng hộ mình có thêm động lực ra thêm nhiều bài viết hay hơn trong tương lại nhé.
Cảm ơn và hẹn gặp bạn trong những bài viết tiếp theo. Thank you. 😊
Ae nào có dự định trở thành
Dev
hoặcBrSE
tại Nhật (N2-N3, 2-3 năm exp trở lên hoặc zero tech có tiếng N1-N2, cả 2 đầu Nhật và VN) cần mình đưa roadmap hoặc review CV, hiểu hơn về các câu hỏi thường gặp khi interviewDev
hoặcBrSE
, cách deal lương cao... cần support thì cứ liên hệ mình qua zalo nhé: 0379302361 hoặc Facebook của mình. Hoặc có bất kỳ vấn đề về kỹ thuật nào cần hỏi thì cứ liên hệ mình nhé.