Có phải đang thực hiện một thay đổi nhỏ, thử nghiệm nó, sau đó rửa sạch và lặp lại, một thói quen xấu?


54

Tôi là một lập trình viên với một số năm kinh nghiệm. Tôi nhận ra mình có một thói quen nhất định. Tôi không chắc đó có thực sự là một thói quen xấu hay không.

Tôi nhận được một danh sách các nhiệm vụ để thực hiện cho một giải pháp, ví dụ như các nhiệm vụ nhỏ,

  1. Thay đổi tài nguyên của điều khiển người dùng này
  2. Thay đổi kích thước của một cái khác
  3. Thêm một số HTML và mã hóa trên một điều khiển người dùng khác

Tất cả những nhiệm vụ này đều nhỏ. Ý tôi là chúng có thể được thực hiện trong vòng 10 phút, nhưng tôi có thói quen xấu là thực hiện các thay đổi nhỏ và sau đó kiểm tra chúng nhiều lần trong trình duyệt web . Đây có phải là một thực hành tốt?

Hay tôi nên thực hiện tất cả chúng cùng một lúc và sau đó kiểm tra chúng cùng nhau?

Nếu nó thực sự là một thói quen xấu thì làm thế nào để tôi khắc phục nó, vì cảm thấy như lãng phí thời gian để kiểm tra những thay đổi nhỏ lặp đi lặp lại?



3
@gnat câu trả lời được bình chọn hàng đầu của bạn cũng dựa trên ý kiến ​​- lập trình viên.stackexchange.com / questions / 154733 / Giả Mỗi câu trả lời tôi đọc là đưa ra ý kiến ​​riêng, có ý kiến ​​gì không?
Toán học

2
Không phải vậy đâu. Làm thế nào về câu trả lời được bình chọn cao thứ hai của bạn - lập trình viên.stackexchange.com / questions / 159964 / Lỗi - không phải là ý kiến ​​cũng dựa trên?
Toán học

7
Cách tiếp cận nghe có vẻ giống với Kiểm tra hướng phát triển trong đó bạn tạo một bài kiểm tra, thực hiện các thay đổi cần thiết để vượt qua bài kiểm tra, sau đó chạy thử nghiệm của bạn. Sau đó, khi bạn lặp lại điều này cho lần kiểm tra thứ hai, lần chạy thử thứ hai của bạn sẽ bao gồm lần kiểm tra thứ nhất; bạn sẽ kiểm tra lại nhiều lần để chứng minh rằng nó vẫn hoạt động, nhưng nó tự động.
Kevin Hogg

5
Tôi sẽ nói rằng trái ngược với thói quen, tạo ra một loạt các thay đổi và chỉ sau đó thử nghiệm nó, là thói quen xấu.
Chris B. BehDR

Câu trả lời:


130
  • Đó là một thực hành tốt.
  • Bạn đang theo phương pháp khoa học.
  • Nếu bạn thay đổi một số điều trước khi thực hiện bất kỳ thử nghiệm nào thì việc kiểm tra từng thử nghiệm sẽ khó khăn hơn và có lẽ không đáng tin cậy, vì các điều kiện tiên quyết sẽ khó chuẩn bị hơn và các thay đổi khác nhau có thể tương tác với nhau theo cách bạn đã thấy trước.
  • Thời gian bạn cảm thấy mình đang "lãng phí" bây giờ, bạn sẽ lấy lại được sau này trong các giai đoạn tập trung, thử nghiệm và duy trì.
  • Con đường để đi.

9
AFAIK, đối với lập trình UI, nó không chỉ là thực hành tốt, nó là thực hành duy nhất được chấp nhận. Đó là lý do tại sao các công ty phần mềm tạo ra rất nhiều What you see is what you getcông cụ cho các nhà phát triển làm việc với HTML, CSS, Widget, v.v ...
InformedA

38

Thực hiện nhiều thay đổi nhỏ và thử nghiệm từng cái không phải là một điều xấu. Nó cho phép bạn xem ảnh hưởng của mỗi thay đổi, và sau đó khi một sự thay đổi gây ra một vấn đề, đó là dễ dàng hơn nhiều để biết thay đổi gây ra vấn đề - một trong những gần đây nhất!

Nếu bạn có một danh sách công việc với 10 mặt hàng, và bạn làm tất cả chúng cùng một lúc và sau đó kiểm tra trang và sau đó nhận thấy rằng trang trông sai, nó có thể là khó khăn hơn để biết thay đổi phá vỡ trang.

Tất nhiên, có thể đưa phương pháp này đến mức cực đoan. Tìm kiếm sự cân bằng là chìa khóa, và điều đó đi kèm với việc hiểu rõ hơn về những gì bạn đang thay đổi và cách các thay đổi có thể ảnh hưởng lẫn nhau.


18

Câu hỏi của bạn có hai phần:

  1. Tôi có nên thực hiện tất cả chúng một lần và sau đó kiểm tra chúng cùng nhau không?

    Tôi giả sử bạn đang sử dụng một VCS .
    Và để theo dõi, những nhiệm vụ đã được thực hiện nó có ý nghĩa để phân phối danh sách các nhiệm vụ vào một danh sách các cam kết: một nhiệm vụ, một cam kết .

    Điều đó giúp dễ dàng quản lý các phiên bản khác nhau của cơ sở mã hiện tại; bạn có thể trở lại trạng thái trước đó, chọn những thay đổi bạn muốn vào thân chính, v.v.

    Câu trả lời rất rõ ràng:

    Không, thực hiện thay đổi chỉ từng cái một - một nhiệm vụ một cam kết .

  2. nhưng tôi có một thói quen xấu là thực hiện các thay đổi nhỏ và sau đó kiểm tra chúng nhiều lần trong trình duyệt web, đây có phải là một thực hành tốt?

    Đó là một cách thực hành tốt để kiểm tra mã / giao diện người dùng bất cứ điều gì , nhưng thật vô nghĩa khi làm đi làm lại nhiều lần trong trình duyệt. Có các công cụ, để làm điều đó tự động cho bạn ( Selenium, PhantomJS / Casper, ZombieJS )

    Câu trả lời cho trường hợp này là:

    Có, nên thử nghiệm phần mềm nhiều lần, nhưng sử dụng tự động hóa


2
+1, nhưng tôi không đồng ý với việc sử dụng tự động hóa. Khi tôi đang phát triển một tính năng mới, tôi kiểm tra cả thủ công và tự động hóa. Các bài kiểm tra thủ công cho phép tôi rất chắc chắn rằng mọi thứ đang hành xử theo cách tôi mong đợi. Có thể viết một bài kiểm tra tự động không chính xác, xem nó vượt qua và nghĩ rằng tất cả đều tốt, sau đó kiểm tra thủ công và thấy rằng có gì đó không ổn.
Kevin - Tái lập Monica

Một nhiệm vụ mà một cam kết chắc chắn có khả năng làm cho nhật ký VCS trở thành một mớ hỗn độn không thể hiểu được đối với các định nghĩa khác nhau về "nhiệm vụ đơn lẻ"
whatsisname

phụ thuộc vào mức độ chi tiết mà bạn xác định nhiệm vụ;) hoặc nếu bạn muốn: một "vé" một cam kết / chi nhánh. Sử dụng git làm cho điều này trở nên dễ dàng
Thomas Junk

1
Để mở rộng những gì Kevin nói, tôi tin rằng nếu bạn thêm một tính năng mới đó là giao diện người dùng, bạn luôn phải kiểm tra thủ công (Tôi chưa tìm thấy tương đương với TTD cho công việc giao diện người dùng), nhưng bạn cũng muốn tự động hóa bộ để giúp đảm bảo bạn không bị hỏng các tính năng hiện có.
scragar

@scragar có. Tự động hóa là để hồi quy.
Thomas Junk

6

Đối với bất kỳ thói quen nào nhà phát triển có, có 2 câu hỏi chính:

  1. Làm thế nào nó ảnh hưởng đến chất lượng của mã bạn thực hiện?
  2. Nó ảnh hưởng đến năng suất của bạn như thế nào?

Nếu câu trả lời cho cả hai là "Nó làm cho nó tốt hơn", hãy tập thói quen, dạy nó cho người khác!
Nếu câu trả lời cho một là "Tốt hơn" và "Tệ hơn" - đó là một phong cách và bạn phải có ý thức về nó. Điều này không phải lúc nào cũng có thể áp dụng được và bạn có thể cần nỗ lực để đàn áp nó mọi lúc mọi nơi.
Nếu câu trả lời cho cả hai là "Tiêu cực" - bạn đã gặp vấn đề nghiêm trọng.

Tất nhiên trong 2 trường hợp đầu tiên, bạn cũng nên suy nghĩ về "Hiệu ứng tích cực có thể được tự động hóa hay thể chế hóa bằng cách nào đó?". Có lẽ tốt hơn là viết một bài kiểm tra hơn là thử các trình duyệt khác nhau mỗi lần? (Lưu ý, tôi biết rằng không dễ để kiểm tra bố cục phù hợp trong phát triển web, tôi không nói rằng điều này luôn luôn có thể hoặc đáng thời gian).

Trong trường hợp cụ thể này, dường như với tôi rằng chất lượng được tăng lên, năng suất có thể bị giảm. Đối với những thay đổi nhỏ, nó có thể hơi tệ (đặc biệt là nếu những thay đổi có liên quan đến nhau), đối với những thay đổi lớn hơn - thì tốt. Miễn là bạn cũng kiểm tra kết quả cuối cùng (tránh "mỗi mô-đun đã được kiểm tra và hoạt động, vì vậy toàn bộ hoạt động cũng vậy, không cần phải kiểm tra!").

Do đó - trừ khi 90% ngày làm việc của bạn đang thực hiện những thay đổi rất nhỏ - đó là một thói quen hoàn toàn tốt để có. Nếu ngày làm việc của bạn là như vậy, thì có lẽ bạn có thể muốn xem lại phong cách làm việc của mình (hoặc nơi làm việc).


4

Điều này phụ thuộc vào tên miền. Để đặt ra một trang web, nó sẽ hoạt động tốt và bạn có thể nhận được phản hồi ngay lập tức (thậm chí bạn có thể làm điều đó trực tiếp trên trình duyệt!). Tương tự, nó sẽ hoạt động tốt cho bất cứ thứ gì không cần thời gian dài để khởi tạo. Điều này được ưa thích vì nó giữ cho khối lượng công việc tinh thần của bạn thấp và giảm khả năng sai lầm.

Tuy nhiên, đối với các dự án thực sự lớn mà bạn phải biên dịch mã và thời gian thực hiện là không tầm thường (vài phút), điều này có thể dẫn đến rất nhiều thời gian xuống nên bạn thường phải dùng đến:

  • "song song hóa" luồng công việc của bạn (ví dụ: làm việc trên nhiều bản dựng cùng lúc) hoặc
  • làm càng nhiều thứ càng tốt trong một lần, hoặc
  • tạo ra một phần độc lập nhỏ để làm việc và tích hợp vào dự án lớn hơn sau này.

(Có lẽ có nhiều cách khác nữa.)


+1 để làm điều đó trong trình duyệt trực tiếp. Tôi sẽ thường thực hiện các chỉnh sửa CSS ngay trên trình duyệt như một nguyên mẫu bỏ đi của công việc thực sự tôi sắp làm.
RubberDuck

0

Như những người khác đã tuyên bố, đây chắc chắn không phải là một thói quen xấu. Tôi thường chỉ muốn thực hiện một vài sửa đổi cùng một lúc. Ngoại lệ duy nhất là nếu tôi có một danh sách lớn các thay đổi không ảnh hưởng đến nhau (ví dụ: thay đổi cho các kiểu hoặc bản sao nhỏ, thay đổi trên các trang khác nhau, v.v.). Nếu bạn đang sửa đổi bố cục, hãy kiên quyết thực hiện từng thay đổi để bạn có thể xác minh mọi thứ là 100% trong tất cả các trình duyệt được hỗ trợ trước khi chuyển sang vấn đề tiếp theo.

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.