Có đáng để thực hiện một cam kết chỉ để giải quyết các lỗi chính tả không quan trọng?


67

Nếu tôi bắt gặp một lỗi đánh máy không quan trọng trong mã (giả sử, dấu nháy đơn sai lầm trong câu lệnh in (lỗi), có đáng để thực hiện một cam kết để khắc phục lỗi đó không, hay đơn giản là nên để yên?

Cụ thể, tôi tò mò về việc cân nhắc việc ghi nhật ký cam kết với giá trị của việc giải quyết các lỗi chính tả không quan trọng này. Tôi đang nghiêng về việc giải quyết chúng. Tôi có phải là người phạm tội không?


40
Nếu một cam kết tầm thường tổng hợp bất cứ điều gì, bạn cần đầu tư vào một VCS tốt hơn, các công cụ lọc nhật ký tốt hơn hoặc thực hành tốt hơn để thông báo các mức độ khắc phục khác nhau.
Rex Kerr

@ root45 Mặc dù nếu bạn nhìn vào kết quả cho nó, tất cả chúng đều là một loại ngữ pháp khác với câu hỏi này.
Izkata

Câu trả lời:


130

Cảm nhận cá nhân của tôi là việc cải thiện chất lượng đáng giá với sự bất tiện nhỏ của một mục nhật ký cam kết bổ sung, ngay cả đối với những cải tiến nhỏ. Rốt cuộc, những cải tiến nhỏ tính rất nhiều khi bạn tính đến hiệu ứng cửa sổ bị hỏng .

Bạn có thể muốn tiền tố nó bằng một TRIVIAL:thẻ hoặc đánh dấu nó là tầm thường nếu VCS của bạn hỗ trợ nó.


72
Chỉ muốn thêm vào điều này là tôi muốn những thứ như thế này được cam kết riêng hơn là gộp chung với thứ khác. Vấn đề với việc nhảy là quá nhiều tiếng ồn có thể đánh lạc hướng người đánh giá mã khỏi những thay đổi liên quan. +1
Andy

9
+1 để đề cập đến hiệu ứng cửa sổ bị hỏng. Chuyện nhỏ cũng quan trọng. Nếu mọi thứ thực sự sạch sẽ, mọi người sẽ suy nghĩ kỹ trước khi viết mã bất cẩn hoặc chưa được kiểm tra.
Roy Tinker

25
Ngoài ra nếu bạn gộp nó với một tính năng, sau đó nhập lại tính năng mà bạn mất thay đổi. Cam kết một điều tại một thời điểm.
ctrl-alt-delor

4
Tôi thực sự quan tâm những VCS nào cho phép đánh dấu nhận xét là tầm thường. Tôi đã từng làm việc với SVN, Hg và Git và cũng không nhận thấy điều gì tương tự.
Xion

3
@Andy rằng tiếng ồn không phải là phần tồi tệ nhất ... nếu sau đó ai đó quyết định hoàn nguyên cam kết này vì họ không muốn tính năng đó, đột nhiên bạn cũng mất một cải tiến nhỏ là một phần của (các) cam kết.
rFactor

49

Bạn không phải là người phạm tội, và tốt hơn là giải quyết chúng riêng lẻ. Thay đổi càng nhiều nguyên tử thì càng tốt - bạn không muốn sửa lỗi bị lỗi được trộn lẫn với 500 thay đổi nhận xét / lỗi đánh máy.


9
+1 Mỗi sửa đổi chỉ liên quan đến một sửa chữa cụ thể. Nó trở thành một NIGHTMARE để sửa lỗi backport nếu mỗi bản sửa đổi cũng có một loạt lỗi chính tả ngẫu nhiên được sửa giữa các thay đổi thực sự.
Cấp

28

Trong trường hợp chung: Có

luôn luôn xứng đáng để tăng khả năng bảo trì phần mềm của bạn.

Chỉ cần đi cho nó.

Nếu bạn chuẩn bị phát hành ...

... Và nếu bạn không phải là trưởng nhóm, thì hãy kiểm tra với anh ấy / cô ấy .


Về nội dung của nhật ký cam kết ...

Tôi đồng ý với những người khác rằng ít nhất bạn nên viết một cái gì đó làm cho nó khác biệt với các cam kết liên quan đến "tính năng", nếu đó chỉ là về việc sửa một lỗi đánh máy bị cô lập.

Một thực tế phổ biến là có một số nhiệm vụ không bao giờ chết trong trình theo dõi vấn đề của bạn để theo dõi những thay đổi vượt thời gian và vô tận. Chẳng hạn, không có gì lạ khi có một nhiệm vụ cho:

  • dọn dẹp tự động vô hại lớn (quét lòng trắng),
  • ngữ pháp và lỗi đánh máy,
  • xây dựng sửa đổi hệ thống,
  • Vân vân...

Chỉ cần thận trọng rằng những thứ này không được sử dụng làm ID nhiệm vụ vứt đi cho bất cứ thứ gì khi mọi người lười biếng trong việc tạo vé tài liệu chính xác. Đặc biệt nếu bạn từ chối các cam kết không được liên kết với ID (đó là một điều tốt, nhưng các tác vụ lớn như thế này sẽ còn hấp dẫn hơn đối với các nhà phát triển lười biếng).


7
Kiểm tra với trưởng nhóm của bạn để sửa lỗi chính tả? Nếu tôi là trưởng nhóm đã căng thẳng với phiên bản sắp tới, tôi sẽ không muốn bị làm phiền với những điều tầm thường như vậy.
Joh

2
@Joh: không nhất thiết là bạn có thể phá vỡ bản dựng, nhưng có thể có các công việc xây dựng khác, hoặc một công việc có thể đã được gắn thẻ và sẵn sàng để sử dụng, và các kiểm soát kiểm toán của bạn (tùy thuộc vào ngành của bạn) có thể buộc bạn buộc phải cam kết vô hại này đối với các nhiệm vụ và yêu cầu, vì vậy nếu nó đi ra khỏi nơi không có thể chỉ là một chút đau đầu; mà bạn có thể dễ dàng lưu lại chỉ trong vài ngày sau khi phát hành. Nhưng nói chung, tôi đồng ý với bạn và thậm chí tôi còn nói rằng một công ty hoạt động như vậy đang làm sai. Nhưng bạn không phải là người sẽ sửa nó, vì vậy hãy điều hành nó nếu bạn không phải là người cao cấp.
haylem

2
@Joh: về cơ bản, nếu trưởng nhóm của tôi thấy một bản dựng mới đột nhiên nhảy lên hệ thống xây dựng khi anh ta chuẩn bị xây dựng một bản dựng mới (hoặc đã bắt đầu nó), thì tôi có thể đảm bảo rằng mức độ căng thẳng của anh ta sẽ tăng lên bằng cách sử dụng phương pháp này cũng ...
haylem

7

Typose nên được thêm vào như một cam kết. Sửa các từ sai chính tả hoặc lỗi ngữ pháp sẽ làm tăng khả năng đọc mã của bạn.

Sử dụng một thông điệp cam kết như "Đã sửa lỗi chính tả" hoặc "Đã sửa lỗi chính tả trong file.c" sẽ giúp bạn phân biệt các cam kết này với các cam kết mã chính khác.


7

Có, bạn hoàn toàn nên làm điều này, đặc biệt là sớm trong một dự án.

Tại sao? Hai điểm:

  1. Bạn có thể sẽ không biết liệu một lỗi đánh máy có "nghiêm trọng" hay không cho đến khi quá muộn. Một số bản sửa lỗi có thể không được sửa vì mọi người nghĩ rằng nó sẽ không phải là vấn đề lớn. Đến khi nó.

  2. Sửa lỗi chính tả sớm và cố tình sẽ dễ dàng hơn nhiều so với sửa lỗi sau hàng trăm dòng lệnh / hàm đã được thực hiện với nó. Một lần nữa, hack tạm thời có thể trở thành bán vĩnh viễn một cách đáng ngạc nhiên nhanh chóng. Đây là lý do tại sao tôi phải xử lý các đối tượng có cả hai phương thức "Thu gọn" và "Colapse ALL".


2
Có - trong tất cả các câu trả lời đúng, tôi thích câu trả lời này nhất khi đề cập rằng nó phụ thuộc vào "khi nào".
Wonko the Sane

4

Đối với các lỗi ngữ pháp mà người dùng cuối có thể nhìn thấy, thì có, bằng mọi cách, nó đáng để thực hiện cam kết vì hoàn toàn có thể người dùng hoặc QA có thể đi cùng và báo cáo lỗi và cần phải theo dõi. Nếu nó đã được sửa thì nó có thể giải quyết nhanh thời gian cần thiết để giải quyết vấn đề.

Nếu đó là một lỗi ngữ pháp trong các nhận xét xung quanh mã, tôi sẽ không làm gì về nó trừ khi đó là một phần của các thay đổi đối với mã thực tế cũng như trong trường hợp bạn đang cập nhật tài liệu về mã.


3

Nếu bạn lo lắng về việc ghi lại nhật ký cam kết, thì bạn đã làm sai điều gì đó. :-) Cam kết thường xuyên là một điều tốt! Tôi cam kết sửa lỗi chính tả mọi lúc. Nhận chúng trong codebase càng sớm càng tốt và tăng tốc chu kỳ dev!


2
I commit typo fixes all the timeIMO thật đáng lo ngại, hãy thử tìm những lập trình viên có tiếng Anh tốt hơn?
Lie Ryan

Ya lấy những gì bạn có thể có được những ngày này. Tìm lập trình viên có thể viết mã hoàn toàn khả thi là một vấn đề nghiêm trọng!
Brian Knoblauch

2

Tôi bỏ phiếu đồng ý. Hãy kiểm tra chúng. Tôi đã làm việc cho một công ty ghét mọi người kiểm tra nội dung. Ý tôi là hầu hết mọi thứ. Các đánh giá mã được mở rộng và vì vậy nếu bạn kiểm tra một thay đổi chỉ sửa lỗi chính tả bạn đã rên rỉ. Bạn có thể tưởng tượng trạng thái của mã. Trên thực tế, mã không đáng sợ, nhưng nó chảy ra như nước giải khát chứ không chảy như rượu.


0

Có quy trình quản lý thay đổi của bạn cho phép nó?

Trong môi trường của tôi, mọi cam kết tôi thực hiện phải được gắn lại với yêu cầu thay đổi đã được yêu cầu bởi người dùng doanh nghiệp hoặc thay đổi cấp độ hệ thống bắt buộc, hoàn thành với các quy trình thử nghiệm của người dùng cuối tương ứng. Một lỗi đánh máy đơn giản như bạn mô tả có thể sẽ không được ghi lại như một trong những lỗi đó (Tôi đã tìm thấy lỗi chính tả và lỗi ngữ pháp trong một trong những ứng dụng của tôi tồn tại hơn 4 năm mà không ai nhận ra), vì vậy, nếu / khi kiểm toán viên đến gọi tôi sẽ có một thời gian rất khó giải thích bản thân mình.

Tôi sẽ lưu một thay đổi như bạn đang mô tả (và thực tế là có một thay đổi, như một vấn đề thực tế - một tên phương thức bị đánh vần sai và tôi chỉ phát hiện ra nó) trong một thời gian khi tôi có một thay đổi "thực sự" cần phải có cũng được thực hiện và đặt "lỗi chính tả khác nhau" trong nhật ký.


+1 Trong một số môi trường, điều này là đúng. Xin đừng downvote chỉ vì điều này không đúng ở nơi bạn làm việc.
MarkJ

-1 quá trình quản lý thay đổi của bạn dường như hút thời gian lớn . Tôi sẽ hiểu (và thậm chí thích hơn ) rằng mọi cam kết phải liên quan đến yêu cầu thay đổi - phần này trong quy trình của bạn có vẻ ổn. Nhưng OMG có vẻ như các yêu cầu do nhà phát triển khởi xướng (như tái cấu trúc lỗi này / sửa lỗi chính tả trong đó ) bị cấm làm tăng cờ đỏ lớn cho tôi. Nó giả định rằng người dùng / kiểm toán viên kinh doanh luôn biết rõ hơn các nhà phát triển - nếu điều đó gần với sự thật, thì họ sẽ tự viết mã
gnat

Nếu nhà phát triển có thể thuyết phục những người chấp thuận tiến lên với những thay đổi mà họ đáng để thực hiện, thì họ có thể tiến lên. Nhưng nếu tôi tìm thấy một lỗi đánh máy đơn giản trong tên của một phương thức hoặc tìm thấy một số mã được sao chép / dán cần được cấu trúc lại thành một phương thức, tôi không thể thực hiện thay đổi mà không được phép. Không chỉ đơn giản là "thực hiện đúng mã" - phải thực hiện thử nghiệm chấp nhận và các nhà phát triển không ở vị trí họ có thể nói với doanh nhân "Tôi đã thực hiện thay đổi này, bạn sẽ không bao giờ nhận thấy tôi đã làm, nhưng bạn phải trải qua một chu kỳ thử nghiệm. "
alroc

@alroc rằng "nếu có thể thuyết phục" chỉ che giấu một quá trình phản tác dụng dưới một bề mặt hợp lý. Yêu cầu thuyết phục doanh nghiệp / kiểm toán về những thay đổi lớn, về các điểm kiểm tra / phát hành cột mốc đã thỏa thuận, v.v ... có ý nghĩa tốt, OK. Dành một vài giờ / ngày để biện minh cho một nỗ lực mất một tuần của dev và QA, đó là tẻ nhạt nhưng công bằng, OK. Nhưng buộc điều này cho mọi phương pháp sửa lỗi chính tả hoặc phương pháp giải nén ... hãy cho tôi nghỉ ngơi - điều này không có gì ngoài việc kiểm soát một cách thiếu suy nghĩ ở giai đoạn sai thời điểm
gnat

Hãy để tôi thử giải thích điều này một lần nữa. Nếu tôi có thể sửa lỗi chính tả hoặc trích xuất một phương thức trong khi thực hiện một thay đổi khác, được chấp thuận, tôi có thể đưa nó vào mà không phải bán bất kỳ ai trên đó. Nhưng tôi không thể thực hiện một thay đổi không hiển thị cho người dùng và không có tác động tích cực trực tiếp đến doanh nghiệp / người dùng mà không bán quyền hạn trước tiên.
alroc

-1

Sử dụng DVCS để chỉnh sửa lịch sử

Nếu bạn lo ngại về lịch sử cam kết sạch sẽ, hãy xem xét thực hiện công việc chính của bạn trong các nhánh tính năng . Nếu bạn tình cờ làm việc với một VCS phân tán , bạn có thể dễ dàng chỉnh sửa lịch sử cam kết của mình trước khi đẩy nó sang nhánh chính. Nếu bạn đang ở trên SVN, hãy thử Git - nó có thể tương tác hai chiều với Subversion và bạn cũng có thể chỉnh sửa lịch sử trước khi thực sự cam kết Subversion.

Giữ ý thức chung

Nếu bạn không muốn hoặc không thể chỉnh sửa lịch sử cam kết, không có lý do chức năng nào để thực hiện cam kết sớm hoặc nguyên tử cho một lỗi đánh máy nhỏ không ảnh hưởng đến kiểm tra hoặc biên dịch tự động . Trong trường hợp này, theo tôi, giữ cho lịch sử cam kết sạch sẽ quan trọng hơn việc thực hiện các cam kết nguyên tử. Trộn một hoặc hai sửa lỗi chính tả với sửa đổi "thông thường" sẽ không gây hại cho bất kỳ quy trình đánh giá tiềm năng nào. Tuy nhiên, bạn có thể muốn nhóm một số sửa chữa nhỏ vào một cam kết, có lẽ khi "dọn dẹp" sau một phiên mã hóa lớn hơn.

Lưu ý rằng các lỗi chức năng vẫn phải được cam kết càng sớm càng tốt trong một cam kết nguyên tử.

Giọng điệu chung của các câu trả lời ở đây dường như gợi ý một chiến lược "cam kết mọi thứ nhanh chóng" ngay cả đối với các lỗi chính tả nhỏ. Tôi có xu hướng không đồng ý và hoan nghênh thảo luận.

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.