Có thể có quá nhiều tính đồng nhất trong các tiêu chuẩn mã hóa?


12

Có một điều như là quá nhiều đồng nhất? Nơi tôi làm việc tất nhiên chúng tôi có các tiêu chuẩn bao gồm quy ước đặt tên, kiến ​​trúc, khung để tận dụng, v.v. Tuy nhiên, gần đây đã có rất nhiều phê bình về những điều tôi sẽ xem xét nhiều phong cách hơn.

Ví dụ: viết các ifcâu lệnh trong nhiều dòng so với một dòng, sử dụng ??toán tử hợp nhất c # null thay vì nói == null, số lượng khoảng cách cho các vết lõm, v.v.

Dường như với tôi điều này bắt đầu nhận được nhiều hơn vào một lựa chọn phong cách cá nhân và không cần phải thống nhất trong một nhóm hoặc công ty. Những gì một người nghĩ đọc rõ ràng hơn người khác có thể không. Có một số giá trị cho tính đồng nhất "thêm" này?


2
Xin chào Gratzy, Lập trình viên.SE không phải là một ban thảo luận ; chúng tôi đang ở đây để giải quyết các vấn đề thực sự mà bạn có thể phải đối mặt. Bạn có một vấn đề thực tế bạn đang cố gắng giải quyết? Nếu vậy, bạn có thể sắp xếp lại câu hỏi của bạn để giữ cho câu trả lời mang tính xây dựng và thoát khỏi những cạm bẫy của việc trở thành một cuộc thảo luận?

1
@Gratzy nói cách khác, với một tình huống mà cá nhân bạn đang phải đối mặt, tiêu chí cho một câu trả lời đúng là gì?

2
@Mark Trapp theo FAQ là những tiêu chí cho một câu hỏi Tất cả các câu hỏi chủ quan dự kiến ​​sẽ mang tính xây dựng. Làm thế nào để chúng ta xác định điều đó? Những câu hỏi mang tính chủ quan mang tính cách xây dựng 1. 1. truyền cảm hứng cho những câu trả lời giải thích về lý do tại sao và cách làm thế nào. 2. có xu hướng có câu trả lời dài, không ngắn. 3. có giọng điệu xây dựng, công bằng và vô tư. 4. mời chia sẻ kinh nghiệm qua ý kiến. 5. nhấn mạnh rằng ý kiến ​​được sao lưu với các sự kiện và tài liệu tham khảo. 6. không chỉ là niềm vui xã hội vô tâm. Tôi tin rằng câu hỏi của tôi bao gồm 4 câu đầu tiên ít nhất
Gratzy

2
@Gratzy cũng từ FAQ: "Bạn chỉ nên hỏi những câu hỏi thực tế, có thể trả lời dựa trên những vấn đề thực tế mà bạn gặp phải. Những câu hỏi hóc búa, kết thúc mở làm giảm tính hữu ích của trang web của chúng tôi và đẩy những câu hỏi khác ra khỏi trang nhất."

2
@Mark Trapp Tôi đã nêu các tiêu chí cho một câu trả lời chấp nhận được và đúng như tôi đã nói đây là một vấn đề thực tế và hoàn toàn thẳng thắn từ sự quan tâm đến câu hỏi và câu trả lời tôi sẽ nói người khác đồng ý.
Gratzy

Câu trả lời:


16

Tính đồng nhất không phải là một vấn đề (nó tốt) nhưng độ cứng hoặc tính không linh hoạt có thể. Nếu phấn đấu cho sự đồng đều, bạn trở nên giáo điều thì tác hại mà bạn đang gây ra cho nhóm có thể lớn hơn lợi ích đến từ sự đồng nhất (có thể) dẫn đến.

Tốt nhất chỉ nên đặt kiểu cơ bản cho những thứ quan trọng nhất (tiêu chuẩn đặt tên và viết hoa, thụt lề, dòng mới và vị trí khung, v.v.), đặt đề xuất cho những thứ ít quan trọng hơn (nếu định dạng câu lệnh, khoảng trắng khác xung quanh dấu ngoặc đơn, v.v.) , và sau đó không lo lắng về phần còn lại.


1
Tôi đã ở đó

+1, đã nói những gì tôi muốn nói, nhưng tốt hơn!
Thất vọngWithFormsDesigner

@Pierre có phải là lý do tại sao bạn tự do bây giờ? :)
Nicole

không thực sự, nhưng tôi đã gặp một số người quan sát về hướng dẫn. Thật đáng sợ làm sao nó có thể cực đoan. Tôi nghĩ bạn đã xác định giới hạn khá tốt.

7

Khi có khả năng hàng chục người đang làm việc trong một dự án trong suốt nhiều năm tuổi thọ của nó, đôi khi nó trở nên khó hiểu khi bạn phải nhảy theo phong cách. Hãy tưởng tượng đọc một cuốn sách trong đó các chương khác nhau được viết bởi các tác giả khác nhau, những người chỉ phần nào duy trì phong cách viết. Điều đó là có thể, nhưng nó gây phiền nhiễu.

Hầu hết các IDE có thể thực thi các kiểu ngày nay, vì vậy nếu cần, bạn có thể phân phối (như một phần của mã nguồn dự án) một tệp tùy chọn IDE chỉ định kiểu mã hóa đã chọn và yêu cầu mọi người cài đặt nó và sử dụng nó để định dạng mã mà chúng đang viết . Tôi cá là thậm chí còn có cách để mã được định dạng lại / tạo kiểu khi đăng ký (mặc dù tôi chưa phải điều tra vấn đề này).


Vâng, bạn có thể có thể dính một kịch bản kiến ​​ở đó ở đâu đó.
Michael K

1
IntelliJ, ít nhất, có một tùy chọn để định dạng lại mã trước khi đăng ký.
Nicole

3

Một trường hợp về tính đồng nhất quá mức mà tôi đã thấy là có một tiêu chuẩn duy nhất áp dụng cho tất cả các ngôn ngữ lập trình bất kể sự phù hợp:

  • Ngăn cản gotongay cả trong các ngôn ngữ như C mà không try... catch.
  • Sử dụng InitialCapstên (như trong MFC và C # của Microsoft) trong JavaScript có thư viện chuẩn initialLowerCase.

2

Tôi không nghĩ có một thứ như vậy là quá nhiều tính đồng nhất. Tuy nhiên, tôi thường thấy rằng quá nhiều CỤ THỂ trong các tiêu chuẩn mã hóa. Lợi ích của tất cả mọi người khi đặt niềng răng trên một dòng riêng biệt là không rõ ràng và không vượt quá thời gian tranh cãi về nó hoặc khắc phục các vấn đề thẩm mỹ trong mã.


2
@Tungano Tôi không thể đồng ý nhiều hơn. Nghịch lý của các tiêu chuẩn mã hóa là chúng rất đáng để có, nhưng chúng không đáng để tranh cãi.
Charles E. Grant

3
Tôi không thấy việc buộc một phong cách cụ thể xuống cổ họng của một lập trình viên sẽ giúp bạn tránh những tranh luận đó như thế nào. Trên thực tế, tôi lập luận rằng làm cho một lập trình viên thích nghi với phong cách mà họ không thích KIẾM những lý lẽ đó, hoặc ít nhất là phẫn nộ.
JohnFx

1
@JohnFx, bởi vì hầu hết các lập trình viên sẽ nhận ra rằng tính nhất quán của phong cách đóng góp lớn hơn nhiều cho chất lượng mã và khả năng duy trì sau đó là bất kỳ sự lựa chọn cụ thể nào về kiểu dáng. Theo kinh nghiệm của tôi, bạn có thể đếm số mũi nhanh của đội, xem những gì mọi người thích và không thích, và nhanh chóng đi đến thống nhất. Thỉnh thoảng ai đó sẽ có một bugaboo đặc biệt và bạn chứa chúng, sau đó họ sinh ra bugaboo của người khác. Nếu tôi thấy mình quấy rối đội trong năm phút về lý do tại sao trường hợp lạc đà là xấu xa, tôi chỉ từ bỏ nó và chịu thua như một bài kiểm tra về tính linh hoạt cá nhân của tôi.
Charles E. Grant

1
Tôi khẳng định, hầu hết các lập trình viên nghĩ rằng sự nhất quán của phong cách đóng góp lớn như vậy, nhưng nó thực sự không. Có vẻ như nó phải, thật khó chịu khi nhìn vào mã không phù hợp với phong cách thú cưng của bạn và trải qua một khối mã "làm sạch" cho các vấn đề mỹ phẩm nhỏ là một cách tốt để trì hoãn. Hãy nhìn xem, tôi cũng đã từng ở trong bandwagon đó cho đến khi tôi nhận ra mình đang tập trung vào mạ vàng và không phải là người giao hàng.
JohnFx

1
Tôi làm việc với mã từ nhóm Đức của chúng tôi, một vài dự án OSS và một số mã cổ mà chúng tôi có cũng như các công cụ hiện tại của chúng tôi. Một số là C, một số C ++, một số C #. Vì vậy, tôi phải làm việc với một số kiểu mã khác nhau mọi lúc. Khi bạn làm điều đó, bạn sẽ nhận ra các hướng dẫn phong cách nhỏ nhặt được quy định trong các tiêu chuẩn là như thế nào. Nếu tôi có thể chuyển từ dự án này sang dự án khác, tôi có thể xử lý ai đó đặt {} của họ ở những nơi khác nhau. Đây là lý do tại sao tôi nghĩ tiêu chuẩn duy nhất đáng chết là quy tắc có 1 quy tắc: "tính nhất quán trong mỗi dự án".
gbjbaanb

2

Tôi có 2 đối số cho tính đồng nhất:

  • Thúc đẩy sở hữu tập thể. Rằng ai đó có thể đi chỉnh sửa mã của người khác mà không sợ rằng "đứa con" của ai đó sắp bị tổn thương bởi sự thay đổi. Một loại tâm lý "Tất cả chúng ta cùng ở đây".

  • Dễ dàng thêm vào nó. Nếu một cái gì đó đã được thực hiện ở một nơi khác thì điều này có thể được thực hiện và tái sử dụng có thể. Một số quy ước có thể giúp làm cho mọi thứ dễ đọc hơn hoặc thay đổi đôi khi vì vậy đây là một lợi ích khác cho tâm trí của tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.