Là phong cách mã hóa trong các tổ chức là một điều tùy chọn?


30

Tài liệu về phong cách lập trình này có một quy tắc chung, có nghĩa là:

Các quy tắc có thể bị vi phạm nếu có sự phản đối cá nhân mạnh mẽ chống lại chúng.

Điều này va chạm với cách tôi đang nghĩ, và có nhiều bài báo nói rằng phong cách mã hóa thực sự quan trọng. Ví dụ: điều này nói:

Một tài liệu tiêu chuẩn mã hóa cho các nhà phát triển biết họ phải viết mã như thế nào. Thay vì mỗi nhà phát triển mã hóa theo phong cách ưa thích của riêng họ, họ sẽ viết tất cả mã theo các tiêu chuẩn được nêu trong tài liệu. Điều này đảm bảo rằng một dự án lớn được mã hóa theo một kiểu nhất quán - các phần không được viết bởi các lập trình viên khác nhau. Giải pháp này không chỉ làm cho mã dễ hiểu hơn, mà còn đảm bảo rằng bất kỳ nhà phát triển nào nhìn vào mã sẽ biết những gì mong đợi trong toàn bộ ứng dụng.

Vì vậy, tôi có hiểu nhầm gì đó từ tài liệu này và trích dẫn ở đầu câu hỏi này không? Mọi người thực sự có thể bỏ qua phong cách mã hóa?


Có lẽ tôi đã không đủ rõ ràng, vì vậy với chỉnh sửa này, tôi sẽ làm rõ một chút.

Tôi đang viết tài liệu kiểu mã hóa cho nhóm của chúng tôi và tôi muốn kiểm tra kiểu bằng cách sử dụng một số máy phân tích tĩnh. Nếu thất bại, Jenkins sẽ gửi email. Và tôi muốn không xem lại mã, nếu kiểu không khớp. Điều này rõ ràng va chạm với trích dẫn đầu tiên.

Nhưng sau đó, nếu trích dẫn là đúng, việc sử dụng tài liệu kiểu mã hóa là gì, nếu ai đó có thể làm bất cứ điều gì họ muốn?


Câu trả lời, rõ ràng, là: nó phụ thuộc. Tất cả các câu trả lời dưới đây phù hợp với các đội khác nhau trong các công ty khác nhau có văn hóa khác nhau. Bất cứ điều gì bạn đề xuất nên phù hợp với những gì nhóm sẽ thực hiện - và bạn nên có ý tưởng về điều này bởi vì, tất nhiên, bạn sẽ thảo luận về nó một cách không chính thức với các thành viên trong nhóm hoặc cá nhân hoặc trong các nhóm nhỏ. Cá nhân tôi thích a) bất cứ điều gì tôi có thể chỉ cần đặt tùy chọn trong Emacs, Visual Studio và IntelliJ IDEA và b) hoàn toàn không có tab cứng nào trong các tệp trong mọi trường hợp! Đối với mọi thứ khác, bất cứ điều gì nhóm muốn là ok.
davidbak

Theo tôi, nếu bạn đang viết một hướng dẫn thì bạn đã thua trận rồi. Không có cách nào bạn có thể tạo ra một tài liệu có thẩm quyền mà các nhà phát triển sẽ thực sự đọc. IDE hiện đại đi kèm với một loạt các phong cách. Chọn một và gọi nó là tài liệu tham khảo của bạn.
Cerad

Tài liệu kiểu mà bạn liên kết là "tài liệu" kiểu mã hóa được đề xuất; đó không phải là "tài liệu" phong cách. Nếu bạn đang tạo tài liệu trang web của mình, hãy sử dụng tài liệu này cho đến khi nó phù hợp. Nếu bạn có phản đối, sau đó thay đổi tài liệu của bạn cho phù hợp. Ví dụ, bỏ qua các tuyên bố bạn không thích.
user2338816

"Các quy tắc có thể bị vi phạm nếu có sự phản đối cá nhân mạnh mẽ chống lại chúng." Đôi khi, đó là một sự cân nhắc chính trị: giai đoạn 1 là chọn tham gia. Không có nó, một đồng nghiệp cao cấp cũ có thể giết chết hoàn toàn ý tưởng về tiêu chuẩn mã.
brian_o

Câu trả lời:


12

Theo như tôi có thể nói, tuyên bố làm bạn bối rối là một sự thỏa hiệp thực dụng được đưa ra để các hướng dẫn phục vụ đối tượng càng rộng càng tốt. Tùy thuộc vào ngữ cảnh cụ thể của bạn (nhiều hơn ở bên dưới), bạn có thể có một tùy chọn để điều chỉnh nó và sử dụng hiệu quả hơn các hướng dẫn.

Bạn thấy, hướng dẫn đề cập đến "sự phản đối cá nhân mạnh mẽ" như là một biện pháp để biện minh cho hành vi vi phạm. Những phản đối như vậy không phải là một cái gì đó để bỏ qua một cách nhẹ nhàng, đặc biệt nếu những điều này đến từ các nhà phát triển có kinh nghiệm.

Những phản đối này thể sai, làm phiền bạn, nhưng (và đây là một NHƯNG rất LỚN) họ cũng có thể chỉ ra rằng một quy tắc cụ thể là sai - nói chung hoặc trong bối cảnh của dự án cụ thể (một ví dụ về sai quy tắc là một yêu cầu để cung cấp đăng nhập chi tiết trong mã quan trọng hiệu suất).

Tôi nghĩ rằng bất kỳ hướng dẫn phong cách hợp lý nào cũng nên tính đến những điều trên và cố gắng đáp ứng nhu cầu có thể để tự điều chỉnh. Bây giờ, nếu hướng dẫn làm bạn bối rối chỉ nhắm mục tiêu đến các nhóm trưởng thành với các quy trình và môi trường hiệu quả và trơn tru, thì có thể được nêu ít mơ hồ hơn, ví dụ như thế này:

Các quy tắc nên được tuân thủ nghiêm ngặt, trừ khi một thách thức được đưa ra đối với chúng - trong trường hợp đó, quy tắc bị thách thức nên được bỏ qua cho đến khi điều này được giải quyết - bằng cách từ chối thách thức hoặc chấp nhận nó và điều chỉnh các quy tắc cho phù hợp.

Bạn có thể thích những điều trên tốt hơn và bạn có thể muốn nó như vậy ở mọi nơi, cho mọi người, nhưng hãy nhìn kỹ hơn vào phần "thách thức được nâng lên / bỏ qua / điều chỉnh" và tự hỏi làm thế nào nó có thể được thực hiện. Tự hỏi mình có thể mất bao lâu tùy thuộc vào dự án và nhóm. Nếu nó mất một giờ, điều đó có thể chấp nhận? Điều gì nếu nó mất một ngày, hoặc một tuần, hoặc ... một tháng?

Bạn thấy đấy, cách tiếp cận thách thức và bỏ qua cho đến khi được giải quyết có thể mở ra một cánh cửa rộng lớn cho sự lạm dụng nếu nó được trình bày như một hướng dẫn cho bất kỳ dự án nào. "Vâng vâng, chúng tôi nghe thấy bạn, hãy làm theo hướng dẫn nói. Trước tiên, hãy điền vào mẫu thử thách này và nhận được sự chấp thuận của CEO / CFO / CTO; mong đợi điều này sẽ mất một hoặc hai tuần. Sau đó, hãy đợi cho đến khi chúng tôi cập nhật kiểm tra mã của chúng tôi ; điều đó có thể mất một hoặc hai tuần nữa. Trong khi đó, vui lòng đảm bảo rằng mã hiệu suất quan trọng của bạn nôn ra các báo cáo ghi nhật ký được định dạng chính xác về mỗi lần di chuyển đăng ký. "

Tôi không thể đọc được suy nghĩ của các tác giả hướng dẫn nhưng có vẻ hợp lý khi cho rằng họ muốn tránh sử dụng nó để biện minh cho một mớ hỗn độn như mô tả ở trên. Từ quan điểm này, đơn giản là an toàn hơn để nói rõ rằng hướng dẫn không giả định bất kỳ sự thực thi nào - theo cách này, tuy vụng về, vẫn cho phép nó có thể sử dụng được cho một loạt các nhóm và dự án tùy ý. Có lẽ có một kỳ vọng rằng một khoản trợ cấp rộng như vậy sẽ khiến các đội trưởng thành và hiệu quả hơn có cơ hội thu hẹp hợp lý mà không làm giảm năng suất của nhà phát triển.


Áp dụng cho trường hợp cụ thể của bạn, viết tài liệu kiểu mã hóa cho nhóm của bạn và không xem xét mã nếu kiểu không khớp - Tôi nghĩ bạn cần tính xem mất bao lâu để các nhà phát triển thách thức quy tắc cụ thể, bỏ qua nó, đã giải quyết và thay đổi hoặc khôi phục tùy theo độ phân giải.

Nếu bạn tìm ra cách để làm cho quá trình này hoạt động mà không đưa ra nhiều trở ngại vào quy trình phát triển của mình, thì cách tiếp cận thử thách / giải quyết chính thức và dễ theo dõi thực sự đáng để xem xét thay vì "vi phạm nếu bạn khóc đủ lớn".


Là một lưu ý phụ, tôi muốn giải quyết những gì bạn đã viết trong một bình luận khác , "Giả sử rằng phong cách mã hóa là lý tưởng, và nếu đó không phải là trường hợp, v.v."

Đây là một giả định nguy hiểm, thực sự. Tôi đã bị gãy mũi trên nó (hai lần! Trong một dự án duy nhất! Nơi tôi có nhiều kinh nghiệm và tưởng tượng rằng tôi biết mọi thứ về nó, hãy tìm hiểu) và tôi thực sự khuyên bạn nên bỏ nó. Sẽ an toàn hơn khi cho rằng hướng dẫn phong cách có thể có lỗi và đặt nỗ lực suy nghĩ về những việc cần làm trong trường hợp những lỗi đó được phát hiện.


Hãy nói theo cách này: nhóm của chúng tôi rất nhỏ và quy trình của chúng tôi không bao gồm bất kỳ ai ở trên sếp của tôi (chỉ là trưởng nhóm). Vì vậy, các trò chơi như bạn đã giải thích ở trên sẽ không xảy ra.
BЈовић

@ BЈовић trong trường hợp đó cách tiếp cận thử thách / giải quyết có vẻ là một người chiến thắng rõ ràng
gnat

53

Cho phép mọi người bỏ qua các phong cách mã hóa vì sở thích cá nhân là một ý tưởng tồi.

Câu trích dẫn trong câu hỏi của bạn dường như cho phép bất kỳ nhà phát triển nào chỉ cần nói "Tôi sẽ không sử dụng phong cách này vì tôi không thích nó."

Điều này đi ngược lại toàn bộ vấn đề, khiến mọi người trong nhóm phải làm mọi thứ theo cùng một cách để có sự nhất quán và dễ đọc.

Tôi đồng ý rằng một tài liệu phong cách với tuyên bố như vậy có lẽ là vô nghĩa.

Tuy nhiên, một số linh hoạt trong việc tuân thủ các nguyên tắc phong cách là điều nên làm:

  • Nghiêm túc làm theo một hướng dẫn có thể ngăn chặn cách tốt nhất để viết một đoạn mã cụ thể . Các nhà phát triển có thể bỏ qua hướng dẫn và đưa ra một trường hợp rằng những gì họ đã làm là cách tốt nhất, dễ đọc nhất để hoàn thành một cái gì đó trong trường hợp này.
  • Làm việc với mã kế thừa có thể yêu cầu linh hoạt. Nó có thể không phải là một cách sử dụng tốt thời gian của bạn để sắp xếp lại một cơ sở mã lớn hiện có. Nếu bạn viết lại một phần cụ thể đáng kể, bạn có thể định dạng lại nó thành kiểu ưa thích. Tuy nhiên, nếu bạn chỉ thực hiện một thay đổi nhỏ, có thể tốt hơn là sử dụng kiểu hiện có của mã.
  • Nitpicking về mỗi vi phạm nhỏ của hướng dẫn phong cách không phải là một cách sử dụng thời gian tốt. Đánh giá mã là thời điểm tốt để làm nổi bật bất kỳ mã nào không phù hợp với phong cách của đội. Tuy nhiên, việc nắm bắt và sửa chữa những "lỗi lầm" nhỏ có khả năng trở thành công việc bận rộn tập trung vào những điều sai trái. Chắc chắn, thất bại trong việc xem xét mã nếu phong cách bị bỏ qua một cách trắng trợn. Nhưng tôi không thích ý tưởng chạy một máy phân tích và chỉ ra mọi dấu ngoặc hoặc đặt sai vị trí, không bao giờ để ý đến việc thất bại ai đó trên cơ sở này.

Tóm lại: cho phép linh hoạt tuân thủ các nguyên tắc về phong cách, để đáp ứng tốt nhất nhu cầu của nhóm của bạn - nhưng không phải vì lý do tùy tiện như sở thích cá nhân.


4
Sẽ là tốt hơn để nói rằng nếu có một lý do tốt để phá vỡ các quy tắc, sau đó phá vỡ chúng. Không thể liệt kê tất cả các lý do chính đáng, nhưng tôi đề nghị rằng sở thích cá nhân không phải là một. Các hướng dẫn phong cách Python có một phần chu đáo về khi nào bạn nên phá vỡ các quy tắc.
Michael Hoffman

1
Kiểm tra nitpick kiểu tự động có thể hữu ích: nhưng chỉ khi kết hợp với một nút dễ dàng để áp dụng tất cả các thay đổi được đề xuất và một cách để nói "không, tôi đã phá vỡ quy tắc đó vì một lý do". Tùy thuộc vào mức độ xử lý của bạn, cái sau có thể là thứ cần được chứng minh trong đánh giá mã / v.v.
Dan Neely

1
Việc tuân thủ kiểu mã rất quan trọng tại công ty của tôi, chúng tôi có PyLint thi hành các tiêu chuẩn PEP8 trên mã của chúng tôi như là một phần của đường ống xây dựng của chúng tôi. Các cam kết làm giảm sức khỏe mã được tự động từ chối.
sethmlarson

1
Kiểm tra đủ các quy tắc để có được kết quả bạn cần. Bỏ qua, cập nhật hoặc từ bỏ bất kỳ vấn đề gây ra. Áp dụng một lượng thích hợp thông thường để đánh đổi hạnh phúc và năng suất
Sean Houlihane

2
Trong những năm qua, tôi đã đi đến kết luận rằng phần thực sự hữu ích duy nhất của hướng dẫn kiểu là thụt mã đúng cách. Bạn thậm chí không cần thụt lề theo cùng một cách - chỉ cần thụt lề đúng cách. Các hướng dẫn về phong cách mà tôi đã viết thường chứa không quá 3 quy tắc (thường chỉ có một quy tắc - thụt lề đúng cách để nó trông không xấu xí). Nếu tôi đến một cửa hàng và thấy mã đã có vẻ ổn, tôi thậm chí không khuyên bạn nên cần một kiểu mã hóa.
slebetman

13

Kiểu mã hóa và hướng dẫn kiểu tồn tại để giúp mã dễ đọc hơn. Và khả năng đọc tồn tại để giúp với sự phức tạp.

Do đó, cuối cùng có vi phạm hay không (tôi gọi nó là thích ứng), phong cách mã hóa để phù hợp với nhu cầu tổ chức của bạn tùy thuộc vào mức độ nó giúp mọi thứ trở nên dễ hiểu.

Hãy nhớ rằng, tất cả mọi thứ, và tôi nhấn mạnh, MỌI THỨ, từ lập trình OO đến các mô hình chức năng, đến các mô hình tương tranh khác nhau, tồn tại vì lý do duy nhất là giúp mọi người giải quyết sự phức tạp.

Bất kỳ kẻ ngốc nào cũng có thể viết mã mà máy tính có thể hiểu. lập trình viên giỏi viết mã mà con người có thể hiểu được. - Martin Fowler, 2008


Câu trả lời của bạn không rõ ràng CÓ hay KHÔNG. Vì vậy, bạn đang nói rằng nó thực sự là tùy chọn? Với phần còn lại - tôi đồng ý.
BЈовић 13/05/2016

3
Có, đó là tùy chọn nếu vi phạm nó thực sự có ích (nghĩ mã kế thừa). Không, không phải nếu bạn chỉ làm điều đó bởi vì bạn cảm thấy thích nó và nó không mang lại lợi ích hợp lý. Vì vậy, những gì tôi đang nói là không có gì được đặt trong đá. Phá vỡ bất cứ điều gì hoặc không có gì cho mục tiêu cuối cùng là giảm độ phức tạp.
treecoder

3
@ BЈовић Điều mà treecoder nói về cơ bản là bạn đã tập trung sai. Quy tắc không phải là phép thuật. Bạn sẽ không làm cho mọi thứ trở nên tốt hơn bằng cách tuân thủ chặt chẽ một bộ quy tắc. Vì vậy, bạn phải suy nghĩ, "những quy tắc này cần phải hoàn thành là gì?" thay vào đó, và bạn làm việc hướng tới mục tiêu để thay thế. Các quy tắc cho bạn biết mặc định của bạn là gì; nếu tuân theo các quy tắc hoạt động chống lại mục tiêu mà họ đã đặt ra để hoàn thành, thì họ không đáng để tuân theo trong trường hợp đó .
jpmc26

6

Là phong cách mã hóa trong các tổ chức là một điều tùy chọn?

Các tổ chức lựa chọn để có phong cách mã hóa - không có yêu cầu phải có ngay từ đầu.

Vì vậy, trích dẫn mà bạn đang đọc giải quyết vấn đề lớn nhất mà tôi thấy liên quan đến mã hóa "phong cách" và "tin tặc" siêu sao thực sự - bạn mang một anh chàng mới lên tàu và anh ta viết mã sẽ thả zombie và khiến những máy chủ cũ của bạn hét lên nhanh chóng. .. nhưng phong cách mã hóa của anh ấy khác với "phong cách tổ chức được chấp nhận" của bạn. Anh ta từ chối thay đổi và quá trình để mọi người tuân theo phong cách cụ thể của anh ta sẽ tốn thời gian và tốn kém. Giờ thì sao?

Hầu hết các siêu hacker mà tôi biết đều đi kèm với bản ngã chỉ lớn bằng kỹ năng của họ và họ muốn tổ chức thích nghi với họ chứ không phải theo cách khác. Vì vậy, có lẽ tiêu chuẩn về phong cách mã hóa của bạn nên giống như một hướng dẫn về phong cách mã hóa để bạn có thể để cho kẻ tấn công tin tặc này tiếp tục viết mã nhanh và tuyệt vời với một số sai lệch về phong cách, nhưng hãy chắc chắn rằng mọi người khác đều hiểu điều đó cho đến khi chúng tiếp cận với hacker hoành tráng của anh ta tình trạng, họ cần phải tuân theo các quy tắc (hoặc thậm chí giúp dọn dẹp sau khi anh ta).

Tất nhiên, đây là một cơn ác mộng quản lý, nhưng nói chung việc quản lý dân công nghệ cũng hơi giống với việc chăn dắt mèo. Vì vậy, hầu hết các công ty có "hướng dẫn phong cách" chứ không phải "tiêu chuẩn phong cách". Và các bản dựng không thất bại và đánh giá mã không tự động thất bại do vi phạm kiểu ở tất cả các công ty. Bạn có thể quyết định vấn đề quản lý mà bạn muốn có - cho phép tin tặc siêu sao và có "hướng dẫn" hoặc mất các siêu sao và có kiểu mã phù hợp hơn.


1
Re: "Hầu hết các siêu hacker mà tôi biết đều đi kèm với bản ngã cũng lớn như kỹ năng của họ": Tôi không nghĩ đó là sự thật. Họ dường như có bản ngã lớn vì họ không tự động nói theo ý kiến ​​của người khác, nhưng những người mà tôi biết đều rất cởi mở nếu bạn có thể đưa ra một trường hợp tốt cho những gì bạn đang làm. (Mặc dù tôi không chắc chắn rằng "cái tôi" hoàn toàn trái ngược với sự tuân thủ.)
ruakh

2
"Hầu hết các siêu hacker mà tôi biết đều đi kèm với bản ngã chỉ lớn bằng kỹ năng của họ và họ muốn tổ chức thích nghi với họ chứ không phải theo cách khác." Tôi nghi ngờ bất kỳ nhà phát triển nào tốt đến mức nó sẽ vượt xa chi phí của một thái độ như vậy và tôi nghi ngờ một kỹ sư như vậy sẽ được tuyển dụng rất lâu.
Andy

1
"Và các công trình xây dựng không thất bại và các đánh giá mã không tự động thất bại do vi phạm phong cách ở tất cả các công ty" Thực tế tôi đã làm việc cho một công ty thực tế đã đi theo con đường đó, và kết quả là tốt hơn so với trước khi thực thi lỏng lẻo tiêu chuẩn.
Andy

3

Vì vậy, tôi có hiểu nhầm gì đó từ tài liệu này và trích dẫn ở đầu câu hỏi này không? Mọi người thực sự có thể bỏ qua phong cách mã hóa?

Nó phụ thuộc.

Nơi tôi đang ở hiện tại không có hướng dẫn về phong cách, và đó không phải là vấn đề lớn. Có một số thay đổi nhỏ giữa các lập trình viên, nhưng không ảnh hưởng nhiều đến khả năng đọc, khả năng khám phá hoặc tính nhất quán theo bất kỳ cách có ý nghĩa nào. chúng tôi có một nhóm đủ lớn và văn hóa đủ mạnh để thực thi bất cứ thành viên mới vào nhóm sẽ rơi vào dòng (hoặc khác).

Tại các công ty trước đây, chúng tôi đã phát triển nhanh chóng và có một số người không quen thuộc với ngôn ngữ và thành ngữ của nó. Tại công ty đó, dòng người có nghĩa là không có một nền văn hóa thực thi văn bản tốt. Và những người mới sử dụng ngôn ngữ này có nghĩa là có rất nhiều thứ để điều chỉnh. trình kiểm tra kiểu tự động là cách hiệu quả nhất để thực hiện các điều chỉnh, và một hướng dẫn bằng văn bản thực tế là cách tốt nhất để đào tạo những người mới theo mong đợi của chúng tôi.

Cá nhân, tôi không quan tâm nhiều đến các hướng dẫn về phong cách, và thậm chí ít quan tâm hơn đến việc thực thi kiểu tự động. Nếu người đó thậm chí không thể chọn các thành ngữ cơ bản, tại sao bạn sử dụng chúng như một lập trình viên? Và nếu họ là một người chơi nhóm tồi đến mức họ sẽ liên tục viết mã mà những người khác cảm thấy khó làm việc, tại sao bạn lại sử dụng chúng?


1
Chỉ để trả lời phần cuối: quyết định thuê ngoài của một số thư viện. Và nhóm của tôi không có ảnh hưởng đến những người làm việc ở đó. Phong cách mã hóa của họ là hoàn toàn khác nhau.
BЈовић 13/05/2016

"Chúng tôi có một nhóm đủ lớn và văn hóa đủ mạnh để thực thi rằng bất kỳ thành viên mới nào trong nhóm sẽ xếp hàng" Âm thanh như bạn có ít nhất một số nguyên tắc phong cách, họ chỉ không viết ra?

@ dan1111 - chắc chứ? Tôi có nghĩa là họ có thể sôi sục để "không làm phiền đồng đội của bạn", nhưng câu hỏi được hỏi cụ thể về tài liệu và xuất bản.
Telastyn

2

Đây là một mưu đồ tâm lý nhiều hơn thay vì một số giải thích theo nghĩa đen về cách tốt nhất để quản lý các phong cách mã hóa. Nó làm cho nhóm / công ty / người quản lý / lãnh đạo ít độc đoán. Tôi sẽ tập trung nhiều hơn vào các ngoại lệ tình huống thay vì cá nhân. Bất kể tài liệu mã hóa, mục tiêu là làm cho mọi thứ dễ đọc. Mã gây nhầm lẫn nên được giải quyết và thay đổi nếu thấy cần thiết. Có rất nhiều công cụ để chăm sóc những thứ tẻ nhạt, vì vậy hãy sử dụng chúng.

Có ngoại lệ cho mọi quy tắc. Cung cấp cho mọi người "một số" phòng ngọ nguậy. Càng ít người tham gia vào việc chấp nhận các quy tắc về phong cách mã hóa (Chào mừng anh chàng mới.), Họ càng có xu hướng muốn chống lại. Nhiều thứ có màu đen và trắng, nhưng một số được mở để giải thích.

Mục tiêu nên là khiến mọi người tham gia vào tinh thần của các hướng dẫn mã hóa thay vì đấu tranh qua từng chi tiết và giải thích nhỏ.

Vâng, sẽ đến lúc tài liệu phong cách mã hóa không có ý nghĩa để sử dụng và các nhà phát triển chuyên nghiệp và trưởng thành nên được phép biết sự khác biệt.


Vì vậy, đề nghị của bạn là triển khai một công việc trong jenkins, sẽ định dạng lại tệp ngay khi ai đó kiểm tra cái gì đó trong? BTW "phòng ngọ nguậy" là tôi đoán một cái gì đó tương tự như trong câu trả lời này .
BЈовић 13/05/2016

Nếu nó hoàn thành công việc và ngăn cuộc thảo luận kéo dài một giờ về điều gì đó có thể được sửa chữa mà không cần bất kỳ nỗ lực nào, thì tại sao không. Câu trả lời tương tự, nhưng tôi nghĩ nó có liên quan nhiều đến tinh thần và suy nghĩ của đội. Bạn có thể có tình trạng hỗn loạn mà không có tiêu chuẩn mã hóa dễ dàng như có quá nhiều.
JeffO

2

Dựa trên các chỉnh sửa của bạn, mục tiêu của bạn cho mục tiêu đúng.

Có nhiều lợi ích khi sử dụng một hướng dẫn phong cách, nhưng theo tôi, hai điều quan trọng nhất là khả năng đọc mã giữa các thành viên trong nhóm và thiếu các cam kết "ngớ ngẩn" (như chỉ khoảng trắng, hoặc các dòng thêm và tương tự).

Để đạt được mục tiêu của bạn, hướng dẫn phong cách đã chọn (hoặc được tạo) của bạn phải đơn giản và dễ tuân thủ. Cố gắng thực sự tập trung vào những gì bạn cần. Không ai thích phải quay lại và viết lại một tập mã lớn chỉ để làm cho một kẻ nói dối hài lòng. Nhưng vẫn có thể có một số lợi ích.

Hãy chắc chắn rằng các thành viên trong nhóm của bạn chấp thuận hướng dẫn phong cách. Bạn sẽ giữ họ cho nó, đảm bảo họ đồng ý hoặc đó sẽ là một cuộc đấu tranh vĩnh cửu.

Đảm bảo vi phạm kiểu là "cảnh báo" chứ không phải là "thất bại", hãy để con người quyết định xem vi phạm có gặp lỗi không. Lý do cho điều này là đơn giản. Tôi tin vào một luồng công việc đơn giản. Nếu một nơi nào đó trong giai đoạn "thử nghiệm" xảy ra "thất bại" thì bạn không thể chuyển sang sản xuất. Tôi sử dụng là một sự an toàn. Ngay cả các bản sửa lỗi nóng cũng phải trải qua giai đoạn thử nghiệm (mặc dù ngắn hơn). Bạn có thể thực sự nói rằng bạn sẽ không sửa lỗi nghiêm trọng đó cho sản xuất vì ai đó đã sử dụng "thay vì '? Còn về việc sử dụng vòng lặp for thay vì mỗi vòng lặp thì sao? Nếu vòng lặp for có một số cải tiến so với từng vòng? là những quyết định mà một cỗ máy (kẻ nói dối) không thể đưa ra, vì vậy hãy chắc chắn có một con người, phán đoán cảnh báo và không phải là cỗ máy gây ra lỗi.

Để bỏ qua Hướng dẫn về Phong cách, bạn sẽ phải đánh giá điều đó theo từng trường hợp. Hãy chắc chắn rằng "độ lệch" có lý do thực sự. Họ sẽ đi lên. Công việc của người đánh giá là đảm bảo rằng có một lý do chính đáng để tránh sự sai lệch và không phải là một chuyện nhỏ.


0

Tôi nghĩ rằng âm nhạc tâm trạng ở đây là nếu sự khôn ngoan được chấp nhận là các tiêu chuẩn mã hóa không chính xác hoặc không đầy đủ, thì đó sẽ là điều tồi tệ hơn trong hai tệ nạn nếu các nhà phát triển đồng ý thay vì trải qua quá trình khó khăn để có được tài liệu thay đổi và xem xét lại.

Cũng cần lưu ý rằng các chính sách thực thi tiêu chuẩn mã của năm qua thường không phải là cách mọi thứ được thực hiện bây giờ.

Vào thời xưa, bạn chỉ cần đứng lên giữ cuốn sách ở cuối bàn của nhà phát triển và trích dẫn chương và câu tại sao mã của anh ấy / cô ấy vi phạm mục 34.5.5767.

Bây giờ chúng ta có các công cụ phân tích mã và tài liệu tự động tĩnh, mất rất nhiều công sức của các tiêu chuẩn mã.

Không thực hiện được tất cả những điều này, bạn vẫn có thể gửi lại cho nhà phát triển, nâng nó lên trong phần đánh giá mã hoặc chỉ tự thay đổi nếu bạn quá thiên về.


Giả sử rằng phong cách mã hóa là lý tưởng, và nếu đó không phải là trường hợp - thì mọi người có thể thay đổi nó. Có phải mọi người ngay cả trong trường hợp này được phép bỏ qua nó?
BЈовић

Khó nói - đặc biệt nếu không có sự đồng thuận chung. Tôi đoán thâm niên và / hoặc hòa giải của nhà phát triển sẽ tham gia ở đây ...
Robbie Dee

0

Câu hỏi của bạn xoay quanh việc dung hòa hai trích dẫn. Tôi nghĩ những gì treecoder đã viết trả lời câu hỏi của bạn nói chung. Nó đại diện cho nguyên tắc hướng dẫn của bạn trong văn bản hướng dẫn phong cách.

Cụ thể hơn, vì bạn chịu trách nhiệm thiết lập các nguyên tắc về kiểu mã hóa (đây là giả định của tôi vì bạn là người viết tài liệu), bạn có thể quyết định điều gì là tùy chọn hay không, và mức độ nào bạn sẽ cho phép linh hoạt theo phong cách cá nhân của bạn đội. Bạn sẽ nhận được thông tin phản hồi khi cần thiết. Nhưng một khi các hướng dẫn được đưa ra, hãy gắn bó với chúng.

Vì vậy, bạn có thể dung hòa hai điều dường như mâu thuẫn như thế này:

Hãy nghĩ về trích dẫn đầu tiên như được gửi đến bạn với tư cách là người ra quyết định về phong cách, trước khi tài liệu hướng dẫn hoàn tất. Nếu một tiêu chuẩn phong cách nhất định không hoạt động cho nhóm của bạn, thì điều này được tính là "sự phản đối cá nhân mạnh mẽ" và hướng dẫn của bạn sẽ phản ánh điều đó.

Hãy nghĩ về trích dẫn thứ hai như được gửi đến nhóm của bạn, sau khi tài liệu được hoàn thành. Khi bạn đã thiết lập các nguyên tắc cho nhóm và tài liệu được viết, điều quan trọng là tất cả các nhà phát triển trong nhóm của bạn phải tuân thủ các nguyên tắc về phong cách.


0

Không có vấn đề gì quá nhiều với phong cách mã hóa mà mọi người có, miễn là họ có phong cách mã hóa. Nếu một công ty khăng khăng theo phong cách mã hóa, họ sẽ bước mạnh vào ngón chân của khoảng 49% các nhà phát triển của họ.

Vấn đề là một số lượng lớn các nhà phát triển không quan tâm nhiều đến việc thích ứng phong cách mã hóa của họ với một số tiêu chuẩn phổ biến trong một công ty, nhưng họ rất bận tâm khi được nói bởi những người giỏi hơn (hoặc chỉ quan tâm nhiều hơn đến) chính trị công ty.

Điều đó có nghĩa là việc tạo ra một tiêu chuẩn phong cách mã hóa có thể là một sự lãng phí rất lớn thời gian, một nguồn tranh luận bất tận, nguyên nhân của sự phẫn nộ vô hạn và nói chung là rất nhiều thời gian và năng lượng.


0

Tôi đã vật lộn với các hướng dẫn về phong cách mã trong nhiều năm, như nhiều người khác có trên diễn đàn này. Điều này bao gồm cả hướng dẫn phong cách chiến đấu mà tôi thấy ghê tởm, và cố gắng khuyến khích người khác sử dụng hướng dẫn phong cách để kiềm chế phong cách của họ để có thể dễ đọc hơn.

Các công ty được hưởng lợi từ một tiêu chuẩn mã hóa phổ biến. Có nhiều điều quan trọng cần xem xét khi phát triển phần mềm cho một công ty, như cách chúng tôi sẽ đào tạo các nhà phát triển mới để nhận mã của thế hệ trước. Khi bạn viết mã, bạn không phải lúc nào cũng nghĩ về điều này. Trên thực tế, nhiều lập trình viên chọn thậm chí không xem xét cách những người khác có thể muốn tiếp cận mã 5 hoặc 10 năm sau khi họ đã đi. Hướng dẫn về phong cách mã hóa là cách để một tập đoàn cung cấp trọng tâm cho các mục tiêu 5 và 10 năm này, giúp các nhà phát triển dễ dàng làm việc hơn trong sơ đồ lớn hơn.

Mặt khác, hướng dẫn phong cách mã hóa nổi tiếng là không hoàn hảo, bởi vì không thể phát triển một phong cách mã hóa hoàn hảo và viết nó xuống. Bạn thực sự bắt đầu chạy vào các trường hợp góc hài hước trong đó các bằng chứng toán học bắt đầu thất bại nếu bạn cố gắng làm cho nó hoàn hảo. Vì vậy, chúng tôi biết các hướng dẫn phong cách mã hóa là không hoàn hảo. Họ có thể không hoàn toàn tập trung vào những gì chúng ta cần từ 5 đến 10 năm sau.

Nếu chúng ta "thi hành" một kiểu mã hóa, chúng ta sẽ hy sinh giá trị ngay bây giờ để có giá trị sau này. Điều này sẽ được gọi là "đầu tư" nếu chúng ta có thể tin tưởng rằng chúng ta sẽ nhận được lợi nhuận từ những nỗ lực của mình, nhưng bất kỳ nhà phát triển nào làm việc với hướng dẫn về phong cách viết mã kém có thể chứng thực rằng những lợi ích "dễ đọc" đó được trả giá đắt bằng cách đánh lạc hướng các nhà phát triển tránh xa mã của họ Theo kinh nghiệm của tôi, chỉ có một số rất ít trường hợp các kiểu mã hóa được thi hành có giá trị, điển hình là trên phần mềm cho các khách hàng băng giá duy nhất nơi phần mềm có thể được sử dụng trong 30 hoặc 40 năm!

Thay vào đó, tôi thấy hiệu quả nhất khi coi hướng dẫn về phong cách mã hóa như một tuyên ngôn: "Đây là những gì chúng tôi tin rằng phong cách mã hóa tốt nhất là dành cho nhóm của chúng tôi." Đó là một loạt các suy nghĩ chất lỏng được ghi lại bằng lời. Từ "tin" rất quan trọng: nếu niềm tin thay đổi, hướng dẫn về phong cách mã hóa sẽ thay đổi theo nó.

Đây là nơi trích dẫn "phản đối cá nhân mạnh mẽ" của bạn. Trong cái mà tôi gọi là thế giới "hoàn hảo", bạn viết bất cứ mã nào bạn cảm thấy tốt nhất và bạn sống với hậu quả. Chúng ta thường muốn bỏ qua các hậu quả "mềm" khi chúng ta lập trình, nhưng trong trường hợp này chúng rất quan trọng. Tôi không có vấn đề gì với bạn viết theo phong cách của riêng bạn, nếu bạn không phiền tôi sẽ không bao giờ cho bạn bất cứ điều gì quan trọng và lâu dài để phát triển.

Hãy nghĩ về toàn bộ hệ thống giống như một sân golf. Phong cách mã hóa mở đường dễ dàng xuống fairway. Nếu bạn giữ vững tiêu chuẩn mã hóa, chúng tôi sẽ đảm bảo cuộc sống dễ dàng nhất có thể. Càng đi sâu vào vấn đề, bằng cách sử dụng các tiêu chuẩn mã hóa của riêng bạn, bạn sẽ càng phải chứng minh giá trị của mình trong nhóm.

Nếu tôi đến vào sáng thứ Hai, để thấy rằng bạn đã dành cả tuần để giải quyết một vấn đề mà chúng tôi đã làm phiền trong một năm và bạn đã làm điều đó trong tiêu chuẩn mã hóa "đặc biệt" của riêng bạn, tôi sẽ không nói với bạn về sửa nó. Tôi sẽ bảo bạn đi tắm. Nếu tiêu chuẩn mã hóa "đặc biệt" của bạn đặc biệt "đặc biệt", tôi thậm chí có thể đề nghị một nhà phát triển cấp nhập cảnh "xem xét" mã để truyền bá kiến ​​thức về cách mã của bạn hoạt động và đề cập một cách khéo léo rằng nếu có gì khó đọc, anh ấy / cô ấy nên đọc dọn dẹp nó. Bạn đã cung cấp đủ giá trị cho công ty vào cuối tuần mà thậm chí không đề cập đến các vi phạm tiêu chuẩn mã hóa nghiêm trọng mà bạn đã cam kết.

Tất nhiên, có những giới hạn trong phép ẩn dụ chơi gôn này. Nếu tôi yêu cầu bạn thực hiện một số nhiệm vụ xếp hạng và tệp, có thể thêm các trường mới vào một số biểu mẫu và bạn quyết định sử dụng cơ hội để cấu trúc lại toàn bộ mã điền biểu mẫu cho phù hợp với phong cách cụ thể của bạn, sử dụng một loạt các ký tự mờ như định nghĩa macro và một số kỹ thuật lập trình meta mẫu tuyệt vời mà bạn vừa học được từ trao đổi ngăn xếp, bạn sẽ được yêu cầu quay lại và sửa nó. Bạn đã chọn hành động, đó là những hậu quả.

( Tuyên bố miễn trừ trách nhiệm: Tôi đã hoàn toàn viết ra cách thực hiện nàyis_base_of để giải quyết một nhiệm vụ mang tính thời sự và kiếm được từng chút địa ngục mà tôi nhận được từ các nhà phát triển cấp cao. Tôi nói rằng nó đáng giá. Tôi vẫn nhận được một tiếng cười sảng khoái mỗi khi tôi hãy xem cách mô hình đó kết hợp với 7 phần không liên quan đến đặc tả C ++ để làm điều gì đó tuyệt vời. Hãy xem, các nhà phát triển cấp cao! Đó là những gì bạn nhận được khi cấm boostdự án cụ thể này! )


-1

Best dường như sử dụng trình định dạng mã tự động là một tính năng tích hợp sẵn của hầu hết mọi IDE gốc và nên tồn tại cho hầu hết mọi ngôn ngữ lập trình phổ biến hơn hoặc ít hơn. Điều này lặng lẽ loại bỏ rất nhiều công việc không cần thiết và nhiều ma sát trong quá trình đánh giá mã.

Hoàn toàn hợp lý khi yêu cầu từ tất cả các nhà phát triển phát triển thói quen áp dụng trình định dạng cho phần mới được tạo của mã.

Điều tồi tệ nhất bạn có thể làm là yêu cầu một số kiểu mã hóa tùy chỉnh mà trình định dạng mã hiện tại không hỗ trợ.

Trong các trường hợp tương đối hiếm, một số phần có thể được định dạng khác nhau, nếu bộ định dạng thực hiện điều này thực sự khủng khiếp, nhưng thường thì tốt hơn là điều chỉnh bộ định dạng cho tất cả để định dạng tốt hơn.

Nó có thể là một số quy tắc hữu ích mà trình định dạng không thể hỗ trợ (ví dụ cách đặt tên biến) nhưng nếu chỉ có các quy tắc này, chúng tương đối dễ thực hiện.


thật đáng buồn khi điều này không trả lời trực tiếp câu hỏi . Dù sao +1, cho lời khuyên tốt, và một giải pháp thiết thực để vô nghĩa qua lại về phong cách. cấu hình bộ định dạng và được thực hiện với nó.
Bruno Schäpper

Tôi vẫn nghĩ rằng chỉ cần một trình định dạng là giải pháp tốt nhất cho vấn đề kiểu mã hóa, vì nó vừa cung cấp một số kiểu nhất quán vừa loại bỏ khả năng mob mà không cần bất kỳ nhà phát triển mới nào cho các khoảng trắng và dòng kết thúc sai. Tôi đã thấy điều này hoạt động thực sự tốt trong các tình huống thực tế, đây là lý do tại sao tôi đề xuất giải pháp này và sẽ không xóa câu hỏi.
h22

-1

Giải pháp thực tế (không chỉ triết học)

Cho phép nhận xét mã để ghi đè linting và biên dịch danh sách các nhận xét đó nếu bạn thích (như được thực hiện với các bình luận cần làm thường xuyên)

Cung cấp cho các nhà phát triển của bạn khả năng làm việc bên ngoài quy ước một cách rõ ràng và có lý do - và trong quá trình đánh giá mã bởi con người, nó có thể được xem xét kỹ lưỡng khi cần thiết.

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.