Điều gì nên có trong một tiêu chuẩn mã hóa? [đóng cửa]


34

Điều gì nên có trong một tiêu chuẩn mã hóa tốt (đọc: hữu ích)?

  • Những điều mà mã nên có.
  • Những thứ mà mã không nên có.
  • Tiêu chuẩn mã hóa có nên bao gồm các định nghĩa về những thứ mà ngôn ngữ, trình biên dịch hoặc trình định dạng mã thực thi không?
  • Điều gì về các số liệu như độ phức tạp chu kỳ, dòng trên mỗi tệp, v.v?

Câu trả lời:


40

Một lý do cho mọi yêu cầu. Bằng cách này, theo tiêu chuẩn không trở thành một kiểu sùng bái hàng hóa và mọi người biết rằng thay đổi tiêu chuẩn nếu lý do không còn áp dụng hoặc vi phạm tiêu chuẩn trong các trường hợp cụ thể mà lý do rõ ràng không áp dụng .


3
Chắc chắn rồi. Mỗi mục trong một tiêu chuẩn nên có lý do được chỉ định rõ ràng.
HỎI

4
Đôi khi không có lý do chính đáng cho một lựa chọn, nhưng mong muốn mọi người đều làm như vậy. Tôi không biết tại sao tất cả chúng ta lái xe bên phải, để sử dụng một chiếc xe tương tự, nhưng nó tốt hơn nhiều so với một nửa bên phải và một nửa bên trái.
David Thornley

9
@David: Đó là một lý do hoàn toàn chính đáng để có một tiêu chuẩn mã hóa. Nếu đó là lý do thì đơn giản nên nói như vậy, tức là "Lý do: Để cải thiện tính nhất quán của cơ sở mã."
dsimcha

Trong thực tế, điều quan trọng nhất về một tiêu chuẩn mã hóa là có một. Những gì trong đó thực sự là thứ yếu.
Jörg W Mittag

20

Tab vs Spaces! Tôi nhận được cập nhật điên rồ khi một trong những đồng nghiệp của tôi vô tình cam kết rất nhiều tab để không gian chuyển vào kho lưu trữ


1
Tôi đồng ý hết lòng!
matiash

2
IMHO, đó là điều duy nhất xứng đáng ở trong một tiêu chuẩn mã hóa.
P Shved


2
IMHO, đó là một ví dụ tuyệt vời về những gì một tiêu chuẩn mã hóa không nên bao gồm.
Bjarke Freund-Hansen

@bjarkef, bạn thích mã hỗn hợp & mã không gian?
Jé Queue

19

Quy ước đặt tên

EDIT: Bằng cách này, tôi có nghĩa là Hướng dẫn đặt tên, không đặt tên Quy tắc.

Ví dụ, một Hướng dẫn sẽ là All boolean values should begin with Is/Can/Has/etc when possible. Một quy tắc sẽ làAll boolean values must start with Is


3
LPSZ * lppsz_CPP_MrKim_ClassOfStudents [] [];
Mateen Ulhaq

3
-1: Đây chính xác là loại chi tiết cấp thấp khiến các nhà phát triển bỏ qua các tiêu chuẩn. Bạn cũng có thể bắt buộc mọi người phải đeo cà vạt.
TMN

2
@TMN: Thiếu các quy ước đặt tên là loại chính xác khiến các nhà phát triển tuyệt vọng về việc hiểu mã. Họ không cần phải kén chọn, nhưng một vài hướng dẫn chung sẽ giúp ích rất nhiều.
David Thornley

1
@Rachel: Vâng, chúng tôi đã có "tất cả các thuộc tính boolean phải bắt đầu bằng tiêu chuẩn 'Is'". Vết thương với các thuộc tính như IsCanUpdateIsHasChildren. Chắc chắn, đó là sai, nhưng đó là nghị định trong tiêu chuẩn. Và đây là quan điểm của tôi: một khi bạn bắt đầu chỉ định những điều này, bạn phải đảm bảo rằng bạn bao quát tất cả các cơ sở, nếu không mọi người sẽ chạy theo một cái gì đó mà tiêu chuẩn không bao gồm, hoặc che đậy xấu, và sau đó họ sẽ viết một cái gì đó sai, hoặc họ bắt đầu bỏ qua các tiêu chuẩn. Dù bằng cách nào, đội thua cuộc.
TMN

1
Đó là lý do tại sao tôi nghĩ rằng nó nên bao gồm Nguyên tắc, không phải Quy tắc, về cách đặt tên cho các đối tượng của bạn. Tên chính xác vẫn còn để lại cho các nhà phát triển. Tôi sẽ chỉnh sửa câu trả lời của tôi.
Rachel

10

Một tiêu chuẩn mã hóa cho một nhóm nên bao gồm các tùy chọn trình biên dịch cho các cảnh báo và lỗi phải được giải quyết.

Các lập trình viên nên được tự do tăng cảnh báo cho mã của riêng họ, nhưng phải có một đường cơ sở để việc đọc và làm việc với mã của người khác không làm lộn xộn đầu ra bạn nhận được từ trình biên dịch.

Một tiêu chuẩn như vậy cũng sẽ phải giải quyết làm thế nào các lập trình viên có thể vô hiệu hóa các cảnh báo theo từng trường hợp như vậy, nếu có một đoạn mã đặc biệt không tuân thủ theo cách khác.


Đã đồng ý. Phần khác tôi muốn nói thêm là nếu bạn để nó sống như một cảnh báo, thì nó phải được giải quyết bằng cách thay đổi hoặc loại bỏ cảnh báo. Mặt khác, các cảnh báo trở nên vô dụng nhanh chóng (quá nhiều trong một dự án lớn) và bạn cũng có thể tắt chúng đi. Trong VS, tôi thích thấy Cảnh báo phá vỡ bản dựng và buộc bạn phải đối phó với chúng.
MIA

Đây không phải là thứ bạn nên đặt trong tệp trang điểm của bạn và không theo tiêu chuẩn sao?
Bjarke Freund-Hansen

@bjarkef: Cuối cùng, các tùy chọn sẽ đi vào Makefile, vâng. Nhưng quan điểm của việc đưa nó vào tiêu chuẩn là chuẩn hóa những gì phải giải quyết. Ví dụ, các nhà phát triển có nên luôn tạo ID tuần tự hóa không? Tùy thuộc vào nhóm để quyết định xem điều này nên được ủy thác hoặc bỏ qua.
Macneil

@bjarkef: Chắc chắn, nhưng thật tốt khi có chúng trong một tài liệu tham khảo tiêu chuẩn khi bạn bắt đầu một dự án mới và phải viết một makefile mới (hoặc dự án mới của bạn sử dụng một cái gì đó ngoài Make cho công cụ xây dựng của nó).
TMN

9

Một số tiêu chuẩn tôi thích (tôi biết có rất nhiều trong số chúng, nhưng đó là những tiêu chuẩn tôi thích):

  • Phạm vi kiểm tra đơn vị 80%
  • Quyền sở hữu tập thể của mã (viết mã để được đọc bởi các đồng đội của bạn chứ không phải trình biên dịch)
  • Viết bình luận. Viết những gì bạn sẽ nói với một người mới.
  • Giữ cho nó đơn giản

Các yêu cầu liên quan đến phạm vi kiểm tra đơn vị là một trong những điều tốt nhất có thể đi vào các tiêu chuẩn mã hóa.
Adam Crossland

Về phạm vi kiểm tra: Tại sao chỉ có 80%? Đây có phải là một ví dụ về quy tắc 80/20 một lần nữa, theo kinh nghiệm của bạn, 20% cuối cùng sẽ phải nỗ lực hơn 100% để đạt được? Ngoài ra, loại bảo hiểm nào? [ví dụ: Bảo hiểm tuyên bố? Chức năng bảo hiểm? Quyết định bảo hiểm? Bảo hiểm điều kiện?]
Macneil

@Macneil: có cái gì đó như thế. Tôi thấy rằng 80% là "đủ tốt" cho hầu hết các lớp và là một con số tốt. Tôi đã từng cố gắng đạt được 95% và thật lãng phí thời gian. Tất nhiên, nếu dễ dàng đạt được 100% cho một số lớp, hãy tiếp tục

Vì vậy, đó là tuyên bố bảo hiểm? Có vẻ như nhiều công cụ không cung cấp cho bạn nhiều hơn thế. Bạn sử dụng công cụ gì?
Macneil

Tôi sử dụng TestDriven.net với bản dựng nCover

7

Tiêu chuẩn mã hóa giúp một chút khi bạn viết mã lần đầu tiên, chúng giúp ích rất nhiều khi bạn hoặc người thay thế của bạn phải cập nhật mã 2 năm sau đó.

Tiêu chuẩn lý tưởng dẫn đến mã nơi bạn có thể chuyển đến bất kỳ trang tùy ý nào trong mã và hiểu chính xác những gì nó đang làm trong lần đọc đầu tiên, bởi vì

  • các tên mô tả rõ ràng dữ liệu nào đang bị thao túng,
  • niềng răng làm cho dòng chảy kiểm soát rõ ràng,
  • các ý kiến ​​giải thích bất kỳ thuật toán không rõ ràng, vv

Mặt khác, quá nhiều tiêu chuẩn tùy ý có thể làm gián đoạn dòng chảy của mã viết. Vì vậy, tôi tin rằng mọi mục trong một quy ước mã hóa được đề xuất nên được đánh giá theo 2 tiêu chí sau:

  • Liệu quy tắc này có giúp đảm bảo rằng mã là chính xác ?
  • Liệu quy tắc này có giúp đảm bảo rằng mã rõ ràng không?

Nếu không đúng, mục này chỉ là tùy ý và có thể không cần thiết


Tôi sẽ bao gồm những điều sau đây trong một tiêu chuẩn tôi viết:

Cho rõ ràng:

  • Tổ chức tệp: Chỉ định một thứ tự cố định cho các mục trong tệp cho phép nhóm dễ dàng điều hướng các tệp khác. Bạn không cần phải tìm kiếm #defines hoặc định nghĩa cấu trúc.

  • Quy ước đặt tên: Hỗ trợ đặt tên nhất quán dễ đọc. Nhưng tránh chỉ định quá nhiều quy tắc, điều đó gây hại cho khả năng ghi.

  • Cấu trúc mã. Vị trí Brace xoăn, mức độ thụt lề, khoảng trắng so với tab, v.v ... Vâng, đây có thể là một sở thích cá nhân mạnh mẽ, nhưng mục tiêu là mã rõ ràng. Tìm tùy chọn tốt nhất cho nhóm và gắn bó với nó.

Đối với chính xác:

  • Thực tiễn tốt nhất cụ thể cho loại vấn đề của bạn: Quy tắc về cấp phát bộ nhớ, hoặc đồng thời hoặc tính di động.

  • "Const Correctnesss", sử dụng hợp lý staticvolatilevv

  • Các quy tắc về macro tiền xử lý và các tính năng dễ bị lạm dụng khác của ngôn ngữ.


6

Những ý tưởng truyền cảm hứng, thực dụng khiến mọi người phải suy nghĩ, thay vì những hạn chế tiêu cực khiến mọi người ngừng suy nghĩ.

Nếu không, bạn nhận được những con khỉ mã sợ đi sau những quả chuối .


4

Điều gì nên có trong một tiêu chuẩn mã hóa? Càng ít càng tốt. Ít hơn là nhiều hơn. Và với sự biện minh, xin vui lòng.

Không phải vì tôi là một lập trình viên cao bồi không muốn xử lý, mà bởi vì tôi đã thấy các thông số mã hóa nặng không có logic đằng sau nó (có lẽ) "Tôi đã tìm thấy điều này trên 'Net ở đâu đó vào năm 95" mà cuối cùng lại trở thành một cơn ác mộng quan liêu để làm việc với.

Một số người thành thật dường như tin rằng bằng cách nâng cao các tiêu chuẩn, họ sẽ thấy sự gia tăng tương ứng về "chất lượng" mã và có lẽ bằng biện pháp đó họ sẽ làm. Trong khi đó, họ sẽ bỏ qua kiến ​​trúc, hiệu suất, ý thức chung và một loạt những thứ khác cuối cùng quan trọng hơn số lượng dòng trong một tệp.


3

Một thủ tục để xem xét mã để thực thi tiêu chuẩn. Oh, và để tìm lỗi quá.


3

Một số ý nghĩa thông thường cũ sẽ không đi được; có quá nhiều tài liệu tiêu chuẩn mã hóa lao động vào các điểm không liên quan (các mục như loại phông chữ và kích thước là một trong những tài liệu cực đoan hơn tôi từng thấy).

Điều tốt nhất để làm nếu bạn trong một nhóm các nhà phát triển là nói chuyện với nhau và xem mã của bạn, hình thành sự đồng thuận về những gì được chấp nhận và nếu bạn cần viết ra những điểm chính làm hướng dẫn, nhưng hãy giữ chúng như chỉ cần hướng dẫn. Nếu bạn không thể biện minh cho bất kỳ sự khác biệt nào từ các hướng dẫn, bạn thực sự nên xem xét lý do tại sao bạn thực hiện nó.

Vào cuối ngày, mã rõ ràng và dễ hiểu là quan trọng hơn bất kỳ quy tắc cứng nhắc nào về bố cục hoặc kiểu chữ.


Làm thế nào để loại phông chữ và kích thước được kiểm tra?
Jé Queue

@xepoch, nó đã trực quan vào thời điểm đó. Lý do khiến nó đạt tiêu chuẩn thời đó là gấp đôi, Người quản lý lúc đó dễ đọc hơn khi nó được in ra và kiểu chữ được chỉ định để khắc phục các vấn đề về khoảng cách (yêu cầu đơn cách) nên mỗi cột ký tự xếp hàng.
GrumpyMonkey

oh lord - nhắc nhở tôi về std bắt buộc số lượng dòng trống giữa mọi thứ - giữa các phương thức tôi hài lòng (vì nhiều khoảng trắng giúp phân biệt các khối lớn) nhưng trước và sau mỗi khối nhận xét, và sau khi khai báo fn nhưng trước mã chức năng, v.v ... cuối cùng có một chút ngớ ngẩn.
gbjbaanb

2

Như những người khác đã đề cập, bảo hiểm kiểm tra mã là quan trọng. Tôi cũng muốn xem:

  • Cơ cấu dự án. Các bài kiểm tra là một phần của mã, hay chúng nằm trong một thư mục dự án / gói / riêng biệt? Mã UI có tồn tại với các công cụ back-end không? Nếu không, nó được ngăn cách như thế nào?

  • Quá trình phát triển. Viết bài kiểm tra trước khi viết mã? Liệu sửa chữa các bản dựng bị hỏng có ưu tiên hơn phát triển? Khi nào các đánh giá mã được thực hiện, và chúng nên bao gồm những gì?

  • Quản lý mã nguồn. Điều gì được kiểm tra khi nào? Các tài liệu thiết kế và kế hoạch kiểm tra có được kiểm soát không? Khi nào bạn phân nhánh và khi nào bạn gắn thẻ? Bạn có giữ các bản dựng trước đó không, và nếu có bao nhiêu / trong bao lâu?

  • Tiêu chuẩn triển khai. Làm thế nào là một bản dựng được đóng gói? Những gì cần phải đi vào ghi chú phát hành? Các kịch bản nâng cấp được tạo / kiểm soát / chạy như thế nào?

Quên tất cả những điều tào lao về quy ước đặt tên, định dạng và số lượng dòng có thể có trong một hàm / phương thức / mô-đun. Một quy tắc: sử dụng bất cứ kiểu nào hiện có trong bất cứ thứ gì bạn đang chỉnh sửa. Nếu bạn không thích phong cách của ai đó, hãy chọn nó trong phần đánh giá mã. Ngoại lệ duy nhất có thể là điều tab-vs-space, nếu chỉ vì nhiều trình soạn thảo / IDE sẽ chuyển đổi một cách mù quáng sang cái khác, và sau đó bạn sẽ phá hủy lịch sử thay đổi của mình vì mỗi dòng đã thay đổi.


2

Tôi nghĩ rằng thực sự có hai điều cần giải quyết, và trên thực tế tôi sẽ xem xét chúng một cách riêng biệt bởi vì chúng không thể được tiếp cận theo cùng một cách, mặc dù tôi thấy cả hai đều quan trọng.

  • Khía cạnh kỹ thuật: nhằm mục đích tránh mã rủi ro hoặc không đúng định dạng (ngay cả khi được trình biên dịch / trình thông dịch chấp nhận)
  • Khía cạnh trình bày: liên quan đến chính nó làm cho chương trình rõ ràng với độc giả

Khía cạnh kỹ thuật tôi đủ điều kiện của Tiêu chuẩn mã hóa , cũng như Herb SutterAndrei Alexandrescu với Tiêu chuẩn mã hóa C ++ của họ . Bài thuyết trình tôi đủ điều kiện về Phong cách mã hóa , bao gồm quy ước đặt tên, thụt lề, v.v ...

Tiêu chuẩn mã hóa

Bởi vì nó hoàn toàn là kỹ thuật, Tiêu chuẩn mã hóa có thể chủ yếu là khách quan. Vì vậy, mọi quy tắc nên được hỗ trợ bởi một lý do. Trong cuốn sách tôi đã đề cập đến mỗi mục có:

  • Một tiêu đề, đơn giản và cho điểm
  • Một bản tóm tắt, giải thích tiêu đề
  • Một cuộc thảo luận, trong đó minh họa vấn đề làm khác và do đó nêu lý do
  • tùy chọn Một số ví dụ, bởi vì một ví dụ tốt có giá trị bằng một ngàn từ
  • tùy chọn Một danh sách các trường hợp ngoại lệ mà quy tắc này không thể được áp dụng, đôi khi có xung quanh công việc
  • Một danh sách các tài liệu tham khảo (sách khác, trang web) đã thảo luận về điểm này

Cơ sở lý luận và ngoại lệ là rất quan trọng, vì chúng tóm tắt lý do tại sao và khi nào.

Tiêu đề phải đủ rõ ràng để trong quá trình đánh giá, người ta chỉ cần có một danh sách các tiêu đề (bảng cheat) để làm việc. Và rõ ràng, nhóm các mục theo thể loại để dễ dàng tìm ra một mục.

Sutter và Alexandrescu quản lý để có một danh sách chỉ một trăm mặt hàng, mặc dù C ++ được coi là có lông;)

Kiểu mã hóa

Phần này nói chung là ít khách quan hơn (và có thể hoàn toàn chủ quan). Mục đích ở đây là để đảm bảo tính nhất quán, bởi vì điều này giúp người bảo trì và người mới đến.

Bạn không muốn tham gia vào một cuộc chiến tranh thần thánh về phong cách thụt đầu dòng hoặc niềng răng tốt hơn ở đây, có những diễn đàn cho việc này: vì vậy trong danh mục này bạn làm mọi việc bằng sự đồng thuận> bỏ phiếu đa số> quyết định tùy ý của nhà lãnh đạo.

Để biết ví dụ về định dạng, hãy xem danh sách các tùy chọn của Phong cách nghệ thuật . Lý tưởng nhất là các quy tắc phải rõ ràng và đầy đủ để một chương trình có thể viết lại mã (mặc dù không chắc là bạn sẽ không bao giờ viết mã;))

Đối với quy ước đặt tên, tôi sẽ cố gắng làm cho lớp / loại dễ dàng phân biệt với các biến / thuộc tính.

Cũng trong danh mục này, tôi phân loại các "biện pháp" như:

  • thích các phương pháp ngắn đến dài: thường khó đồng ý về thời gian dài
  • thích quay lại sớm / tiếp tục / nghỉ để giảm thụt đầu dòng

Linh tinh?

Và như là một từ cuối cùng, có một mục hiếm khi được thảo luận trong Tiêu chuẩn mã hóa, có lẽ vì nó đặc biệt đối với mỗi ứng dụng: tổ chức mã. Vấn đề kiến ​​trúc có lẽ là vấn đề nổi bật nhất, làm hỏng thiết kế ban đầu và bạn sẽ bị ảnh hưởng bởi nó từ nhiều năm nay. Có lẽ bạn nên thêm một phần để xử lý tệp cơ bản: tiêu đề công khai / riêng tư, quản lý phụ thuộc, tách mối quan tâm, giao tiếp với các hệ thống hoặc thư viện khác ...


Nhưng đó không nếu chúng không thực sự được áp dụng và thi hành .

Bất kỳ vi phạm nào sẽ được đưa ra trong quá trình đánh giá mã và không có đánh giá mã nào sẽ ổn nếu vi phạm là nổi bật:

  • sửa mã để phù hợp với quy tắc
  • sửa quy tắc để mã không còn nổi bật nữa

Rõ ràng, thay đổi một quy tắc có nghĩa là nhận được "đi trước" từ các nhà lãnh đạo.


2

Tôi thích định dạng trong Nguyên tắc thiết kế khung, nó bao gồm một phần chung và các lý do cho các hướng dẫn. Bit hữu ích nhất là các chi tiết bắt đầu bằng Do, Do, Tránh và Xem xét.

Dưới đây là một ví dụ trong phần Thực hiện các Thành viên Giao diện Rõ ràng nó có các mục sau (lưu ý rằng tôi đã bỏ các lý do vì lợi ích)

Tránh thực hiện các thành viên giao diện một cách rõ ràng mà không có lý do mạnh mẽ để làm như vậy

Xem xét thực hiện các thành viên giao diện một cách rõ ràng nếu các thành viên dự định chỉ được gọi thông qua giao diện.

Không sử dụng các thành viên rõ ràng như một ranh giới bảo mật.

Đừng cung cấp một thành viên ảo được bảo vệ cung cấp chức năng tương tự như> thành viên được triển khai rõ ràng nếu chức năng này được dành riêng cho các lớp dẫn xuất.

Điều này tạo ra một giai điệu chung tốt. Bằng cách sử dụng Tránh và Xem xét, bạn có thể cho phép các nhà phát triển sử dụng phán đoán của họ. Ngoài ra bởi vì chúng là hướng dẫn và không phải là quy tắc, các nhà phát triển có thể thấy chúng hợp lý hơn và đến lượt chúng có nhiều khả năng tuân theo chúng hơn.


Nơi tôi hiện đang làm việc, tất cả các giao diện phải được thực hiện rõ ràng và đó là một nỗi đau lớn. Nếu chỉ họ đã đọc Nguyên tắc thiết kế khung trước khi viết tiêu chuẩn mã hóa của họ.
Martin Brown

1

Dường như không ai đề cập đến bảo mật - trong một tiêu chuẩn mã hóa, bạn phải tham khảo các yêu cầu mã bảo mật (ví dụ: việc sử dụng các mô đun xác thực đầu vào, không cho phép các chức năng yếu đã biết như strcpy, yêu cầu xử lý lỗi, v.v.)


+1: Điều này và các cân nhắc đa luồng thường không được biết hoặc hiểu sai, ngay cả bởi các nhà phát triển có kinh nghiệm.
TMN

1

Ví dụ. Các ví dụ gọn gàng, không tầm thường, gần gũi với thế giới thực sử dụng mọi quy tắc. Nhận xét (không nhất thiết là một phần của mã) phần nào của ví dụ tuân theo quy tắc nào.

Mẫu. Không phải loại C ++, nhưng một cái gì đó để sao chép-dán và điền trực tiếp. Sẽ dễ dàng hơn nhiều để có được nhận xét soạn thảo 24 dòng ngay khi bạn có một tài liệu tham khảo để sao chép từ đó.


1

Tính năng số một: Tối đa tuyệt đối hai trang.

Đây là điều bạn muốn mọi nhà phát triển đọc và ghi nhớ. Bạn không cần phải tra cứu tiêu chuẩn mỗi khi bạn cần viết một hàm mới (hoặc tệ hơn là một dòng mới). Vì vậy, hãy giữ nó ngắn gọn và chỉ giữ các quy tắc thực sự cung cấp giá trị gia tăng cho sản phẩm cuối cùng.


1

Tiêu chuẩn mã hóa thực sự là một số mặt hàng:

Quy ước mã hóa

  • những điều này không cần một lý do khác sau đó là "tính nhất quán của cơ sở mã" cho ex. để sử dụng '_' trong các biến thành viên riêng hay không.
  • có thể có một vài cách tiếp cận đúng Chỉ cần chọn một cho thống nhất. cho người cũ xử lý lỗi bằng cách sử dụng ngoại lệ hoặc mã lỗi.

Thực hành tốt nhất

  • những mục này luôn cần một lý do chính đáng với một số ví dụ rõ ràng

cho người cũ Không bao giờ để trống Bắt sau khi thử

try { Foo(); } catch { //do nothing }

1) Nếu có một ngoại lệ do Foo () ném ra, nó có thể gây ra các vấn đề khác về các chức năng tiếp theo, điều đó cho rằng foo đã thành công.

2) Trình xử lý lỗi toàn cầu sẽ không thông báo cho nhóm hỗ trợ ngoại lệ khi xảy ra trên prod

  • bao gồm các thực tiễn về "Mã hóa phòng thủ", như sử dụng các xác nhận để kiểm tra các giả định của bạn.

Môi trường mã hóa

  • các công cụ mà cả nhóm sử dụng. cho người cũ VS 2010, Resharper, Kiln, v.v.

0

Các tiêu chuẩn mã hóa, khi được viết trên giấy, chỉ có rất nhiều hiệu quả. Tôi thích nó như thế nào Go đang xuất bản tiêu chuẩn mã hóa của nó. Nó có công cụ gofmtđịnh dạng văn bản chương trình thành một định dạng. Bất kỳ cuộc tranh luận nào về định dạng mã hóa sau đó sẽ chỉ dẫn đến một bản vá cho các nguồn của gofmt.

Đối với định dạng nên có,

  • Làm thế nào để đặt tên biến, macro, hằng, chữ, hàm, v.v.
  • cách đặt {,}, (,), [,] khi nói đến if, thân hàm, khối lệnh cho bất kỳ mục đích nào khác,
  • độ rộng của vết lõm phải là bao nhiêu
  • một dòng văn bản được phép bao nhiêu ký tự
  • có bao nhiêu mức độ thụt đầu dòng được cho phép trước khi mã bị từ chối / gửi để tái cấu trúc
  • có bao nhiêu dòng mã được phép cho mỗi hàm trước khi nó được gửi lại để tái cấu trúc
  • số lượng đối số tối đa mà một hàm có thể lấy trước khi nó được gửi lại để tái cấu trúc
  • Một vài dòng bình luận trước khi một chức năng bắt đầu giải thích ngắn gọn về những gì nó làm, nếu phần thân vượt quá một trang trên mã màn hình; để lại cách đối tượng đạt được mã trong phần thân của hàm

Khi tôi đang đọc mã (phần lớn ngôn ngữ C) của người khác, nếu tên biến / hàm không trực quan trong ngữ cảnh của dự án hoặc nếu vượt quá năm cấp độ thụt lề hoặc hàm thì có hơn sáu hoặc bảy đối số hoặc một hàm chạy qua Hai hoặc ba trang trên màn hình, việc đọc và hiểu mã trở nên rất khó khăn. Khi được yêu cầu thực hiện các cải tiến / bảo trì công việc trên nó, nó chỉ làm tăng thêm khó khăn. Nó làm cho tôi muốn gofmtchương trình được viết cho mọi dự án (hoặc thậm chí ngôn ngữ) và mọi tệp mã nguồn được chạy qua chương trình đó trước khi nó được cam kết vào dự án.


đã có những người làm đẹp mã trong nhiều năm. Google một cho ngôn ngữ của bạn, bạn sẽ tìm thấy một.
gbjbaanb


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.