2009-05-23 55 views
20

Tôi đã nhìn vào Groovy trên Grails và nhận thấy một dòng ở phía dưới mà nói:"Mã hóa theo quy ước" là gì?

Grails nhằm mang lại các "mã hóa theo quy ước" mô hình để Groovy.

Chính xác mã hóa theo quy ước là gì?

Trả lời

23

Công ước về cấu hình (còn gọi là mã hóa theo quy ước) là mô hình thiết kế phần mềm nhằm giảm số lượng các quyết định mà nhà phát triển cần, đơn giản, nhưng không nhất thiết mất tính linh hoạt.

Cụm từ về cơ bản có nghĩa là nhà phát triển chỉ cần chỉ định các khía cạnh độc đáo của ứng dụng. Ví dụ, nếu có một lớp Bán trong mô hình, bảng tương ứng trong cơ sở dữ liệu được gọi là doanh số bán hàng theo mặc định. Nó chỉ là nếu một deviates từ quy ước này, chẳng hạn như gọi bảng "products_sold", mà một trong những nhu cầu để viết mã liên quan đến những tên này.

Khi quy ước được thực hiện bởi công cụ bạn đang sử dụng phù hợp với hành vi mong muốn của bạn, bạn tận hưởng những lợi ích mà không phải ghi tệp cấu hình. Khi hành vi mong muốn của bạn lệch khỏi quy ước được triển khai, khi đó bạn định cấu hình hành vi mong muốn của mình.

Từ "Convention over configuration" article on Wikipedia.

+1

Bài viết wikipedia như nó đứng ngày hôm nay không phải là một ví dụ rất tốt. Các câu trả lời khác ở đây nên được xem xét. – GaTechThomas

3

Rất nhiều công ước ở đây:

  1. Làm thế nào để đặt tên cho các phần tử HTML để họ dễ dàng truy cập như các thông số từ yêu cầu HTTP;
  2. Cách liên kết thuộc tính đối tượng với tên bảng và cột trong cơ sở dữ liệu;
  3. Cách sắp xếp dự án thành các thư mục/gói;

Đó là những gì bạn làm khi bạn thấy mình giải quyết vấn đề chung theo một kiểu cụ thể. Bạn nhận thấy sự tương đồng và mã hóa chúng thành một số chương trình tự động hóa.

2

Điều đó có nghĩa là nếu bạn tuân thủ các quy ước mã hóa nhất định như được xác định bởi bất kỳ khung công tác dựa trên quy ước nào bạn đang sử dụng, bạn sẽ nhận được rất nhiều chức năng miễn phí. Nói cách khác, nếu bạn cấu trúc ứng dụng của bạn phù hợp với những gì khuôn khổ mong đợi, rất nhiều công việc có thể được lưu lại.

Sẽ là một ý tưởng hay để tìm kiếm những ưu điểm và nhược điểm của việc viết mã theo quy ước.

+1

Câu trả lời của bạn quá trừu tượng và không có ví dụ. nó chỉ đơn giản là nghỉ ngơi những gì người khác đã nói. –

13

Trong ngữ cảnh của Grails, "mã hóa theo quy ước" có nghĩa là nhiều mã và/hoặc cấu hình rõ ràng (tẻ nhạt và lặp lại) được thay thế bằng quy ước đặt tên và cấu trúc thư mục đơn giản. Ví dụ:

  • Bất kỳ lớp có tên kết thúc với điều khiển trong thư mục grails-app/controllers tự động là một bộ điều khiển mùa xuân và đóng cửa được xác định trong đó sẽ được liên kết với URL - bạn không cần phải cấu hình này trong một Tệp XML như bạn sẽ phải khi sử dụng Spring thuần túy.
  • Điều tương tự cũng xảy ra đối với thẻ taglib (thư mục grails-app/taglib) - không còn tệp TLD tẻ nhạt nào nữa!
  • Các lớp miền trong grails-app/domain có thể có "phép thuật quy ước" nhất, được tự động ánh xạ tới lược đồ DB được tạo tự động - với bảng DB và tên cột theo quy ước giống với tên thuộc tính tên miền.
8

Mã hóa theo quy ước vs mã hóa bằng cách cấu hình: Ý tưởng cho rằng bạn có một số đặt hoặc đặt tên quy ước cho các công cụ, do đó bạn không cần phải nói rõ ràng chương trình mà công cụ này là hoặc những gì nó được gọi.
Ví dụ, trong ASP.Net MVC, có một quy ước về nơi các khung nhìn được lưu trữ và những gì chúng được gọi. Điều này có nghĩa là khi mã của bạn chỉ thị cho máy chủ trả về một khung nhìn, thời gian chạy sẽ tìm kiếm một khung nhìn với một cấu trúc đặt tên nhất định trong các thư mục nhất định. Xem trang 20 trong this pdf để biết rõ hơn.

Ví dụ khác sẽ đặt tên quy ước cho phương pháp. Ví dụ, trong một ngôn ngữ hướng sự kiện, bạn có thể lựa chọn khai báo rõ ràng phương thức nào xử lý các sự kiện nào hoặc bạn có thể dựa vào quy ước đặt tên - như ..._ OnOpen hoặc ... OnClick và sau đó dựa vào thời gian chạy để tìm ra phương thức chính xác để gọi cho một sự kiện cụ thể.

4

Xem Convention over Configuration. Đó là khái niệm về việc thiết kế một công cụ hoặc khung công tác để có các tùy chọn cấu hình phổ biến nhất làm mặc định, vì vậy đối với phần lớn người dùng không cần cấu hình.

+0

Bài viết wikipedia như nó đứng ngày hôm nay không phải là một ví dụ rất tốt. Các câu trả lời khác ở đây nên được xem xét. – GaTechThomas

Các vấn đề liên quan