Làm thế nào nghiêm ngặt bạn nên về thụt / khoảng trắng? [đóng cửa]


8

Quá trình phát triển của chúng tôi như sau

mã tác vụ -> người khác mã QAs và tài liệu -> tác vụ được hợp nhất vào trung kế.

Gần đây, một đồng nghiệp đang từ chối chuyển mã QA do các vấn đề với thụt lề và khoảng trắng.

Dưới đây là ví dụ về những vấn đề này (cú pháp là SAS):

Khoảng trắng bổ sung:

        %if &syserr gt 0 %then %goto err; /*last line of code*/




/* Footer area*/

Dòng bổ sung của khoảng trắng và không được thụt vào bên trong sắp xếp Proc:

 /* End Of header * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */


    proc sort data = %dataset ;
    by id; 
    run;
    %if &syserr gt 0 %then %goto err; 

    proc sort data = &second_dataset.;
    by id;
    run; 
    %if &syserr gt 0 %then %goto err; 

Khoảng trắng thêm giữa các bước:

        /*join all details on for each record*/
        proc sort data = &data out = data_srt ; 
              by &conditions; 
        run;
        %if &syserr gt 0 %then %goto err;

        proc sort data = &data2.;
              by &conditions.;
        run; 
        %if &syserr gt 0 %then %goto err; 




        /*cartesian join*/
        data new_data;
              join data 
                          &data2.  ;
              by &conditions; 

        run;

Câu hỏi là, là một lập trình viên giỏi, đang xem mã của bạn và sửa tất cả các loại điều này là điều đúng đắn phải làm, hay điều này thật vô lý?

Có một điều phức tạp nữa là chúng tôi không tích hợp liên tục hoặc kiểm tra tự động, QAer không thể nhanh chóng khắc phục các sự cố này và cam kết mã, vì có nguy cơ vô tình xóa dấu chấm phẩy hoặc thứ gì đó. (Công bằng mà nói, rủi ro áp dụng cho nhà phát triển ban đầu thực hiện những thay đổi này, do đó, nếu lỗi này xảy ra, nó chỉ cần được sửa chữa và tiếp tục).


1
Tôi không biết SAS nhưng khoảng trắng thêm là khá hậu môn. Sự thụt vào đánh tôi như một điểm công bằng.
Erik Reppen

@ErikReppen Mặt khác, những ví dụ đó có 4 dòng trống giữa các đoạn mã. Điều đó thật quá đáng ...
Izkata

Câu trả lời:


16

Vâng, đó là phản ứng đúng. Kiểu thụt đầu dòng phải phù hợp với tất cả các mã.

Một phần lớn của giá trị của thụt đầu dòng nhất quán là nó phù hợp. Bằng cách đó mọi người học cách đọc nó dễ dàng, giúp tăng tốc tất cả mọi người.

Nguyên tắc nhỏ của tôi là bất kỳ phong cách thụt nào mà đội muốn là tốt, miễn là nó có thể được áp dụng một cách máy móc. Áp dụng nó một cách máy móc có nghĩa là bạn không phải tìm hiểu các chi tiết của tiêu chuẩn hoặc dành thời gian để thay đổi khoảng trắng.

Định dạng cơ học cũng trở thành một cách khác mà lỗi nổi bật. Nếu bạn nghĩ rằng bạn đã đính kèm mã trong một khối, công cụ định dạng sẽ bỏ ẩn nó và rõ ràng là bạn đã nhầm lẫn. Điều này cũng làm cho việc tái cấu trúc dễ dàng hơn - ở mức tầm thường khi bạn trích xuất một khối mã vào một hàm, autoformat sẽ loại bỏ vết lõm bổ sung.

Autoformat cũng có nghĩa là nếu bạn thực sự, thực sự không thể sống với tiêu chuẩn mà mọi người khác sử dụng, bạn có thể định dạng mã theo cách bạn thích, sau đó định dạng lại nó trước khi bạn kiểm tra. làm điều đó trước khi xem xét và nếu bạn không chọn nó sẽ được chọn sau đó.

GNU indent là một công cụ có thể được tạo để tự động định dạng hầu hết mọi thứ. Tôi đã thực hiện một tìm kiếm nhanh và dường như có các công cụ xung quanh để tự động định dạng mã SAS nhưng các công cụ SAS không làm điều đó cho bạn.


6
+1 để sử dụng công cụ. Thật là vô lý khi sửa nó bằng tay khi bạn chỉ có thể chạy một công cụ trong hook hook.
imel96

1
@ imel96 Đôi khi có khoảng trắng có chủ ý để hỗ trợ khả năng đọc, một công cụ tự động sẽ làm hỏng. Vì vậy, nó nên là tùy chọn, một cái gì đó bạn có thể kích hoạt khi bạn muốn, không bị ép buộc với mỗi cam kết.
Izkata

@Izkata: Tôi chưa thấy một công cụ định dạng không có mã "không định dạng bit này" mà bạn có thể sử dụng. Nhưng tôi cũng đã đi khá lâu kể từ lần cuối tôi muốn tắt tính năng tự động định dạng. Tôi thừa nhận thỉnh thoảng sử dụng các cấu trúc mã hơi kỳ lạ để có được định dạng tôi muốn (ví dụ như các điều kiện đa dòng với "if true và" trên dòng đầu tiên). Nhưng điều kiện đa dòng là một mã tự nó ngửi thấy, vì vậy thêm một chút để làm cho nó ít khó đọc hơn là IMO đủ công bằng.
Móż 26/11/13

@Izkata, vấn đề với việc làm cho công cụ tùy chọn là ngay khi một người chọn ra một tệp, không ai khác có thể chạy lại công cụ trên tệp đó nếu không họ sẽ phá vỡ mã "không định dạng tệp này". Điều đó có nghĩa là họ nên lướt tập tin đó cho bạn và nói "sửa định dạng". Mỗi khi nó được sửa đổi. Vì vậy, không, tùy chọn không hoạt động. Bạn cần sử dụng các mã không có định dạng xung quanh các khối mã / nhận xét đặc biệt của mình.
Móż 28/11/13

@ Vì vậy, bạn sửa chữa vết lõm thực sự xấu. Đừng mù quáng chạy nó trên toàn bộ tập tin. vim , ví dụ, cho phép bạn chọn một đoạn của tệp và tự động giới thiệu lại, bỏ qua phần còn lại của tệp.
Izkata

5

Đây là điều hoàn toàn chính xác để làm. Một trong những phần lớn nhất của chất lượng mã là khả năng đọc của nó. Nếu bạn chưa thụt mã đúng cách và bạn có khoảng trắng ngẫu nhiên ở mọi nơi, điều đó sẽ làm giảm khả năng đọc mã.

Nói chung, nhóm phát triển của bạn nên tuân theo các tiêu chuẩn chất lượng mã giống nhau khi nói đến thụt lề và khoảng trắng. Nếu các mô-đun khác trong cơ sở mã của bạn không đặt thêm khoảng trắng giữa các bước thì cái này không nên (trừ khi, tất nhiên, nó sẽ cải thiện khả năng đọc).

Tôi không phải là lập trình viên của SAS, nhưng nếu tôi đang xem xét mã và việc thụt lề hoàn toàn không phù hợp và nó trông không gọn gàng, tôi chắc chắn nhận xét về nó để theo dõi và, nếu thực sự xấu, sẽ không xem xét.


3

Như chú Bob nói trong cuốn sách của mình , định dạng (thậm chí khoảng trắng) là vô cùng quan trọng. Phần mềm có xu hướng được đọc thường xuyên hơn nhiều so với văn bản, vì vậy nó hoạt động để chúng ta làm cho nó sạch sẽ và dễ đọc. Đó là một phương pháp giao tiếp.

Lý tưởng nhất là khi làm việc trong một nhóm, bạn sẽ xác định một tiêu chuẩn và mọi người tuân theo nó. Lý tưởng nhất, thay vì nitpicking tiêu chuẩn trong các đánh giá mã riêng lẻ, hãy thiết lập một công cụ sẽ thực hiện công việc cho bạn. (Không chắc chắn công cụ nào sẽ hoạt động cho trường hợp của bạn; một cái gì đó như kiểu kiểm tra cho Java hoặc StyleCop cho C #).

Vì vậy, tôi sẽ trò chuyện với đồng nghiệp của bạn và xem liệu bạn không thể đưa ra một số hướng dẫn về khoảng trắng. Dành một vài phút để làm sạch mã của bạn là giá trị nếu nó làm cho mọi thứ nhất quán xuống dòng.


2

Sau một kinh nghiệm nhiều năm trước, đọc một số mã F-16C / D nơi vết lõm bị phá vỡ, tôi phải nói rằng việc thụt lề chính xác là rất quan trọng.

Nó rất quan trọng đến mức không nên làm bằng tay và không nên sửa bằng tay. Đây là những gì máy tính dành cho.

Họ tạo ra các chương trình máy tính có thể tự động định dạng lại mã nguồn để phù hợp với phong cách ưa thích của công ty bạn. Kết nối một trong số chúng với hệ thống kiểm soát mã nguồn của bạn để mã được tự động tuân thủ bất cứ khi nào nó được kiểm tra.

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.