Lời tựa
Đây thực sự là một nhiệm vụ khó khăn và có rất nhiều điều cần làm. Vì vậy, tôi khiêm tốn đề nghị đây là hướng dẫn toàn diện cho nhóm của bạn, với các gợi ý cho các công cụ và tài liệu giáo dục phù hợp.
Hãy nhớ rằng: Đây là những hướng dẫn , và như vậy có nghĩa là được thông qua, điều chỉnh hoặc loại bỏ dựa trên hoàn cảnh.
Coi chừng: Bỏ tất cả những thứ này vào một đội rất có thể sẽ thất bại. Bạn nên cố gắng chọn các yếu tố anh đào sẽ mang lại cho bạn những giọt mồ hôi tốt nhất, và giới thiệu chúng từ từ, từng cái một.
Lưu ý: không phải tất cả điều này áp dụng trực tiếp cho Hệ thống lập trình trực quan như G2. Để biết thêm chi tiết cụ thể về cách giải quyết những vấn đề này, hãy xem phần Phụ lục ở cuối.
Tóm tắt điều hành cho người thiếu kiên nhẫn
- Xác định cấu trúc dự án cứng nhắc , với:
- mẫu dự án ,
- công ước mã hóa ,
- hệ thống xây dựng quen thuộc ,
- và bộ hướng dẫn sử dụng cho cơ sở hạ tầng và công cụ của bạn.
- Cài đặt một SCM tốt và đảm bảo họ biết cách sử dụng nó.
- Hướng chúng đến các IDE tốt cho công nghệ của chúng và đảm bảo chúng biết cách sử dụng chúng.
- Thực hiện kiểm tra chất lượng mã và báo cáo tự động trong hệ thống xây dựng.
- Kết hợp hệ thống xây dựng để tích hợp liên tục và hệ thống kiểm tra liên tục .
- Với sự giúp đỡ của ở trên, xác định "điểm nóng" chất lượng mã và cấu trúc lại .
Bây giờ cho phiên bản dài ... Chú ý, hãy cố gắng lên!
Độ cứng là (Thường) Tốt
Đây là một ý kiến gây tranh cãi, vì sự cứng nhắc thường được xem là một lực lượng chống lại bạn. Điều đó đúng với một số giai đoạn của một số dự án. Nhưng một khi bạn thấy nó là một hỗ trợ cấu trúc, một khung làm mất đi sự phỏng đoán, nó sẽ giảm đáng kể thời gian và công sức lãng phí. Làm cho nó hoạt động cho bạn, không chống lại bạn.
Độ cứng = Quy trình / Thủ tục .
Phát triển phần mềm cần có quy trình và quy trình tốt vì những lý do chính xác giống như các nhà máy hoặc nhà máy hóa chất có hướng dẫn sử dụng, quy trình, diễn tập và hướng dẫn khẩn cấp: ngăn chặn kết quả xấu, tăng khả năng dự đoán, tối đa hóa năng suất ...
Sự cứng nhắc đến trong chừng mực!
Độ cứng của cấu trúc dự án
Nếu mỗi dự án đi kèm với cấu trúc riêng, bạn (và người mới) sẽ bị mất và cần phải nhận lại từ đầu mỗi khi bạn mở chúng. Bạn không muốn điều này trong một cửa hàng phần mềm chuyên nghiệp và bạn cũng không muốn điều này trong phòng thí nghiệm.
Độ cứng của hệ thống xây dựng
Nếu mỗi dự án trông khác nhau, có một cơ hội tốt họ cũng sẽ
xây dựng khác nhau . Một bản dựng không cần quá nhiều nghiên cứu hoặc quá nhiều phỏng đoán. Bạn muốn có thể làm điều kinh điển và không cần phải lo lắng về chi tiết cụ thể: configure; make install
, ant
,
mvn install
, vv ...
Sử dụng lại cùng một hệ thống xây dựng và làm cho nó phát triển theo thời gian cũng đảm bảo mức chất lượng nhất quán.
Bạn cần nhanh chóng README
chỉ ra các chi tiết cụ thể của dự án và duyên dáng hướng dẫn người dùng / nhà phát triển / nhà nghiên cứu, nếu có.
Điều này cũng hỗ trợ rất nhiều cho các phần khác trong cơ sở hạ tầng xây dựng của bạn, cụ thể là:
Vì vậy, hãy luôn cập nhật bản dựng (như dự án của bạn), nhưng làm cho nó chặt chẽ hơn theo thời gian và hiệu quả hơn trong việc báo cáo các vi phạm và thực tiễn xấu.
Không phát minh lại bánh xe, và sử dụng lại những gì bạn đã làm.
Đề nghị đọc:
Sự cứng nhắc trong lựa chọn ngôn ngữ lập trình
Bạn không thể mong đợi, đặc biệt là trong môi trường nghiên cứu, có tất cả các nhóm (và thậm chí ít hơn tất cả các nhà phát triển) sử dụng cùng một ngôn ngữ và công nghệ. Tuy nhiên, bạn có thể xác định một bộ công cụ "được hỗ trợ chính thức" và khuyến khích sử dụng chúng. Phần còn lại, không có lý do chính đáng, không nên được cho phép (ngoài nguyên mẫu).
Giữ cho ngăn xếp công nghệ của bạn đơn giản, và duy trì và mở rộng các kỹ năng cần thiết đến mức tối thiểu: một lõi mạnh.
Độ cứng của các quy ước và hướng dẫn mã hóa
Các quy ước và hướng dẫn mã hóa là những gì cho phép bạn phát triển cả danh tính với tư cách là một nhóm và một biệt ngữ chung . Bạn không muốn mắc lỗi vào terra incognita mỗi khi bạn mở tệp nguồn.
Các quy tắc vô nghĩa làm cho cuộc sống trở nên khó khăn hơn hoặc cấm các hành động tự do đến mức các cam kết bị từ chối dựa trên các vi phạm đơn giản là một gánh nặng. Tuy nhiên:
Cách tiếp cận cá nhân: Tôi rất tích cực khi nói đến các quy ước về mã hóa, một số người thậm chí còn nói nazi , vì tôi tin vào việc có một
ngôn ngữ chung , một phong cách dễ nhận biết cho nhóm của tôi. Khi mã tào lao được đăng ký, nó nổi bật như một vết loét lạnh lẽo trên khuôn mặt của một ngôi sao Hollywood: nó tự động kích hoạt đánh giá và hành động. Trên thực tế, đôi khi tôi đã đi xa tới mức ủng hộ việc sử dụng các móc nối trước để từ chối các cam kết không tuân thủ. Như đã đề cập, nó không nên quá điên rồ và cản trở năng suất: nó sẽ thúc đẩy nó. Giới thiệu những điều này từ từ, đặc biệt là vào lúc bắt đầu. Nhưng cách tốt hơn là dành quá nhiều thời gian để sửa mã bị lỗi mà bạn không thể làm việc với các vấn đề thực sự.
Một số ngôn ngữ thậm chí thực thi điều này theo thiết kế:
- Java có nghĩa là để giảm số lượng crap buồn tẻ mà bạn có thể viết với nó (mặc dù không có nghi ngờ gì nhiều người quản lý để làm điều đó).
Cấu trúc khối của Python bằng cách thụt lề là một ý tưởng khác theo nghĩa này.
Đi, với gofmt
công cụ của nó , nó hoàn toàn lấy đi mọi tranh luận và nỗ lực ( và bản ngã !! ) vốn có của phong cách: chạy gofmt
trước khi bạn cam kết.
Hãy chắc chắn rằng mã thối không thể trượt qua. Các quy ước mã , tích hợp liên tục và kiểm tra liên tục , lập trình cặp và đánh giá mã là kho vũ khí của bạn chống lại con quỷ này.
Ngoài ra, như bạn sẽ thấy bên dưới, mã là tài liệu và đó là một lĩnh vực khác, nơi các quy ước khuyến khích tính dễ đọc và rõ ràng.
Độ cứng của tài liệu
Tài liệu đi đôi với mã. Mã chính nó là tài liệu. Nhưng phải có hướng dẫn rõ ràng về cách xây dựng, sử dụng và bảo trì mọi thứ.
Sử dụng một điểm kiểm soát duy nhất cho tài liệu (như WikiWiki hoặc DMS) là một điều tốt. Tạo không gian cho các dự án, không gian cho các thử nghiệm và thử nghiệm ngẫu nhiên hơn. Có tất cả các không gian sử dụng lại các quy tắc và quy ước chung. Hãy cố gắng làm cho nó một phần của tinh thần đồng đội.
Hầu hết các lời khuyên áp dụng cho mã và công cụ cũng áp dụng cho tài liệu.
Độ cứng trong nhận xét mã
Mã ý kiến, như đã đề cập ở trên, cũng là tài liệu. Các nhà phát triển muốn bày tỏ cảm xúc của họ về mã của họ (chủ yếu là niềm tự hào và sự thất vọng, nếu bạn hỏi tôi). Vì vậy, không có gì lạ khi họ thể hiện những điều này không có ý nghĩa không chắc chắn trong các bình luận (hoặc thậm chí mã), khi một đoạn văn bản trang trọng hơn có thể truyền đạt ý nghĩa tương tự với ít nội dung hoặc kịch tính hơn. Bạn có thể bỏ qua một vài lý do vui vẻ và lịch sử: đó cũng là một phần của việc phát triển văn hóa đội nhóm . Nhưng điều rất quan trọng là mọi người đều biết điều gì có thể chấp nhận và điều gì không, và tiếng ồn bình luận đó chỉ là:
tiếng ồn .
Độ cứng trong Nhật ký Cam kết
Nhật ký cam kết không phải là một "bước" khó chịu và vô dụng trong vòng đời SCM của bạn: bạn KHÔNG bỏ qua nó để về nhà đúng giờ hoặc tiếp tục với nhiệm vụ tiếp theo hoặc để bắt kịp những người bạn đã rời đi ăn trưa. Họ quan trọng, và, giống như (hầu hết) rượu vang tốt, thời gian trôi qua càng có giá trị. Vì vậy, làm cho họ đúng. Tôi lúng túng khi thấy đồng nghiệp viết một tấm lót cho những cam kết khổng lồ, hoặc cho những vụ hack không rõ ràng.
Các cam kết được thực hiện vì một lý do và lý do đó không phải luôn được thể hiện rõ ràng bằng mã của bạn và một dòng nhật ký cam kết bạn đã nhập. Có nhiều hơn thế.
Mỗi dòng mã có một câu chuyện và một lịch sử . Các khác biệt có thể nói lịch sử của nó, nhưng bạn phải viết câu chuyện của nó.
Tại sao tôi cập nhật dòng này? -> Vì giao diện thay đổi.
Tại sao giao diện thay đổi? -> Vì thư viện L1 xác định nó đã được cập nhật.
Tại sao thư viện được cập nhật? -> Vì thư viện L2, chúng tôi cần tính năng F, phụ thuộc vào thư viện L1.
Và tính năng X là gì? -> Xem tác vụ 3456 trong trình theo dõi vấn đề.
Đó không phải là lựa chọn SCM của tôi và cũng có thể không phải là lựa chọn tốt nhất cho phòng thí nghiệm của bạn; nhưng Git
có quyền này và cố gắng buộc bạn viết nhật ký tốt hơn hầu hết các hệ thống SCM khác, bằng cách sử dụng short logs
và
long logs
. Liên kết ID nhiệm vụ (có, bạn cần một) và để lại một bản tóm tắt chung cho shortlog
và mở rộng trong nhật ký dài: viết câu chuyện của bộ thay đổi .
Đây là nhật ký: Đây là để theo dõi và ghi lại các cập nhật.
Nguyên tắc chung: Nếu bạn đang tìm kiếm điều gì đó về thay đổi này sau đó, nhật ký của bạn có khả năng trả lời câu hỏi của bạn không?
Dự án, Tài liệu và Mã là SỐNG
Giữ chúng đồng bộ, nếu không chúng không hình thành thực thể cộng sinh đó nữa. Nó hoạt động kỳ diệu khi bạn có:
- xóa các bản ghi trong SCM của bạn, w / liên kết đến ID nhiệm vụ trong trình theo dõi vấn đề của bạn,
- trong đó vé của trình theo dõi này tự liên kết với các thay đổi trong SCM của bạn (và có thể với các bản dựng trong hệ thống CI của bạn),
- và một hệ thống tài liệu liên kết đến tất cả những thứ này.
Mã và tài liệu cần phải được gắn kết .
Độ cứng trong kiểm tra
Quy tắc của ngón tay cái:
- Bất kỳ mã mới nào cũng sẽ đi kèm với (ít nhất) các bài kiểm tra đơn vị.
- Bất kỳ mã kế thừa được tái cấu trúc sẽ đi kèm với các bài kiểm tra đơn vị.
Tất nhiên, những nhu cầu này:
- để thực sự kiểm tra một cái gì đó có giá trị (hoặc chúng là một sự lãng phí thời gian và năng lượng),
- được viết và nhận xét tốt (giống như bất kỳ mã nào khác mà bạn đăng ký).
Chúng cũng là tài liệu và chúng giúp phác thảo hợp đồng mã của bạn. Đặc biệt nếu bạn sử dụng TDD . Ngay cả khi bạn không, bạn cần chúng để bạn yên tâm. Chúng là mạng lưới an toàn của bạn khi bạn kết hợp mã mới (bảo trì hoặc tính năng) và tháp canh của bạn để bảo vệ chống lại sự thối mã và các lỗi môi trường.
Tất nhiên, bạn nên đi xa hơn và có các bài kiểm tra tích hợp và
kiểm tra hồi quy cho từng lỗi có thể lặp lại mà bạn sửa.
Độ cứng trong việc sử dụng các công cụ
Nhà phát triển / nhà khoa học không thường xuyên muốn thử một số trình kiểm tra tĩnh mới trên nguồn, tạo biểu đồ hoặc mô hình bằng cách sử dụng khác hoặc triển khai mô-đun mới bằng DSL. Nhưng tốt nhất là nếu có một bộ công cụ kinh điển mà tất cả các thành viên trong nhóm dự kiến sẽ biết và sử dụng.
Ngoài ra, hãy để các thành viên sử dụng những gì họ muốn, miễn là họ TẤT CẢ:
- năng suất cao ,
- KHÔNG thường xuyên cần hỗ trợ
- KHÔNG thường xuyên điều chỉnh cơ sở hạ tầng chung của bạn ,
- KHÔNG làm gián đoạn cơ sở hạ tầng của bạn (bằng cách sửa đổi các khu vực phổ biến như mã, xây dựng hệ thống, tài liệu ...),
- KHÔNG ảnh hưởng đến công việc của người khác ,
- ABLE để thực hiện kịp thời bất kỳ nhiệm vụ yêu cầu .
Nếu đó không phải là trường hợp, sau đó thực thi rằng họ dự phòng mặc định.
Độ cứng so với tính linh hoạt, khả năng thích ứng, tạo mẫu và trường hợp khẩn cấp
Linh hoạt có thể là tốt. Để ai đó thỉnh thoảng sử dụng hack, cách tiếp cận nhanh chóng hoặc công cụ thú cưng yêu thích để hoàn thành công việc
là ổn. KHÔNG BAO GIỜ để nó trở thành thói quen và KHÔNG BAO GIỜ để mã này trở thành cơ sở mã thực tế để hỗ trợ.
Các vấn đề về tinh thần đồng đội
Phát triển cảm giác tự hào về Codebase của bạn
- Phát triển ý thức về niềm kiêu hãnh trong mã
- Sử dụng bảng
- ban lãnh đạo cho một trò chơi tích hợp liên tục
- bảng để quản lý vấn đề và đếm khuyết tật
- Sử dụng trình theo dõi vấn đề / theo dõi lỗi
Tránh các trò chơi đổ lỗi
- NÊN sử dụng các trò chơi Tích hợp liên tục / Kiểm tra liên tục: nó thúc đẩy cạnh tranh hiệu quả và hiệu quả .
- KHÔNG theo dõi các khiếm khuyết: đó chỉ là giữ nhà tốt.
- NÊN xác định nguyên nhân gốc rễ : đó chỉ là quá trình chứng minh trong tương lai.
- NHƯNG KHÔNG gán trách nhiệm : nó phản tác dụng.
Đó là về quy tắc, không phải về các nhà phát triển
Làm cho các nhà phát triển nhận thức được chất lượng mã của họ, NHƯNG làm cho họ thấy mã là một thực thể tách rời và không phải là một phần mở rộng của chính họ, không thể bị chỉ trích.
Đó là một nghịch lý: bạn cần khuyến khích lập trình ít bản ngã cho một nơi làm việc lành mạnh nhưng phải dựa vào bản ngã cho mục đích tạo động lực.
Từ nhà khoa học đến lập trình viên
Những người không coi trọng và tự hào về mã không tạo ra mã tốt. Để tài sản này xuất hiện, họ cần khám phá xem nó có giá trị và thú vị như thế nào. Chuyên nghiệp tuyệt vời và mong muốn làm điều tốt là chưa đủ: nó cần đam mê. Vì vậy, bạn cần phải biến các nhà khoa học của mình thành
lập trình viên (theo nghĩa rộng).
Có người tranh luận trong các ý kiến rằng sau 10 đến 20 năm về một dự án và mã của nó, bất kỳ ai cũng sẽ cảm thấy gắn bó. Có thể tôi sai nhưng tôi cho rằng họ tự hào về kết quả của mã và về công việc cũng như di sản của nó, chứ không phải về bản thân mã hoặc về hành động viết mã.
Từ kinh nghiệm, hầu hết các nhà nghiên cứu coi tiền mã hóa là một điều cần thiết, hoặc tốt nhất là một sự phân tâm thú vị. Họ chỉ muốn nó hoạt động. Những người đã khá thành thạo về nó và có hứng thú với lập trình dễ dàng hơn rất nhiều để thuyết phục việc áp dụng các thực tiễn tốt nhất và công nghệ chuyển đổi. Bạn cần phải có được một nửa ở đó.
Bảo trì mã là một phần của công việc nghiên cứu
Không ai đọc tài liệu nghiên cứu crappy. Đó là lý do tại sao chúng được đánh giá ngang hàng, đọc bằng chứng, tinh chỉnh, viết lại và được phê duyệt hết lần này đến lần khác cho đến khi được coi là sẵn sàng để xuất bản. Điều tương tự cũng áp dụng cho một luận án và một cơ sở mã!
Làm rõ rằng việc tái cấu trúc và làm mới liên tục một cơ sở mã sẽ ngăn ngừa sự thối mã và giảm nợ kỹ thuật, và tạo điều kiện cho việc tái sử dụng và điều chỉnh công việc trong tương lai cho các dự án khác.
Tại sao những thứ này??!
Tại sao chúng ta bận tâm với tất cả những điều trên? Đối với chất lượng mã . Hay đó là
mã chất lượng ...?
Những hướng dẫn này nhằm mục đích thúc đẩy nhóm của bạn hướng tới mục tiêu này. Một số khía cạnh làm điều đó bằng cách đơn giản chỉ cho họ cách và để họ làm điều đó (tốt hơn nhiều) và những người khác nắm lấy chúng (nhưng đó là cách bạn giáo dục mọi người và phát triển thói quen).
Làm thế nào để bạn biết khi nào mục tiêu là trong tầm tay?
Chất lượng là đo lường được
Không phải luôn luôn định lượng, nhưng nó có thể đo lường được . Như đã đề cập, bạn cần phát triển cảm giác tự hào về đội của mình, và cho thấy sự tiến bộ và kết quả tốt là chìa khóa. Đo lường chất lượng mã thường xuyên và hiển thị tiến trình giữa các khoảng thời gian và cách nó quan trọng. Hãy nhìn lại để suy nghĩ về những gì đã được thực hiện, và làm thế nào nó làm cho mọi thứ tốt hơn hoặc tồi tệ hơn.
Có những công cụ tuyệt vời để kiểm tra liên tục . Sonar là một thứ phổ biến trong thế giới Java, nhưng nó có thể thích nghi với mọi công nghệ; và có nhiều người khác Giữ mã của bạn dưới kính hiển vi và tìm kiếm các lỗi và vi khuẩn gây phiền nhiễu.
Nhưng nếu Mã của tôi đã tào lao thì sao?
Tất cả những điều trên đều thú vị và dễ thương như một chuyến đi đến Never Land, nhưng điều đó không dễ thực hiện khi bạn đã có (một đống mã ướt át và có mùi) và một đội không muốn thay đổi.
Đây là bí mật: bạn cần bắt đầu ở đâu đó .
Giai thoại cá nhân: Trong một dự án, chúng tôi đã làm việc với một cơ sở mã có trọng lượng ban đầu là 650.000+ Java LỘC, hơn 200.000 dòng JSP, 40.000+ JavaScript LỘC và hơn 400 MB phụ thuộc nhị phân.
Sau khoảng 18 tháng, đó là 500.000 LỘC Java (SẠCH NHẤT) , 150.000 dòng JSP và 38.000 JavaScript LỘC, với sự phụ thuộc xuống chỉ còn 100 MB (và những thứ này không còn trong SCM của chúng tôi nữa!).
chúng tôi đã làm nó như thế nào? Chúng tôi chỉ làm tất cả những điều trên. Hay cố gắng hết sức.
Đó là một nỗ lực của nhóm, nhưng chúng tôi chậm tiêm trong quy trình và các công cụ của chúng tôi để theo dõi nhịp tim của sản phẩm của chúng tôi, trong khi vội vàng cắt giảm đi những "chất béo": Mã tào lao, phụ thuộc vô dụng ... Chúng tôi đã không ngừng phát triển để tất cả làm điều này: đôi khi chúng ta có những khoảng thời gian hòa bình và yên tĩnh tương đối, nơi chúng ta có thể tự do phát điên trên cơ sở mã hóa và xé nó ra, nhưng hầu hết thời gian chúng ta làm tất cả bằng cách mặc định ở chế độ "xem lại và tái cấu trúc" mỗi khi chúng ta có được : trong quá trình xây dựng, trong bữa trưa, trong khi chạy nước rút sửa lỗi, vào các buổi chiều thứ Sáu ...
Có một số "công trình" lớn ... Chuyển đổi hệ thống xây dựng của chúng tôi từ một bản dựng Ant khổng lồ của 8500+ XML LỘC sang bản dựng Maven đa mô-đun là một trong số đó. Sau đó chúng tôi đã có:
- các mô-đun rõ ràng (hoặc ít nhất là nó đã tốt hơn rất nhiều và chúng tôi vẫn có kế hoạch lớn cho tương lai),
- quản lý phụ thuộc tự động (để bảo trì và cập nhật dễ dàng và để loại bỏ các dep vô dụng),
- bản dựng nhanh hơn, dễ dàng hơn và có thể tái tạo,
- báo cáo hàng ngày về chất lượng.
Một cách khác là tiêm "đai công cụ tiện ích", mặc dù chúng tôi đã cố gắng giảm sự phụ thuộc: Google Guava và Apache Commons làm giảm mã của bạn và giảm bề mặt cho các lỗi trong mã của bạn rất nhiều.
Chúng tôi cũng thuyết phục bộ phận CNTT của mình rằng có thể sử dụng các công cụ mới của chúng tôi (JIRA, Fisheye, Crucible, Confluence, Jenkins) tốt hơn các công cụ tại chỗ. Chúng tôi vẫn cần phải đối phó với một số người mà chúng tôi coi thường (QC, Sharepoint và SupportWorks ...), nhưng đó là một trải nghiệm được cải thiện tổng thể, với một số chỗ còn lại.
Và mỗi ngày, giờ đây có một mánh khóe từ một đến hàng chục cam kết chỉ liên quan đến sửa chữa và tái cấu trúc mọi thứ. Thỉnh thoảng chúng tôi phá vỡ mọi thứ (bạn cần kiểm tra đơn vị, và tốt hơn là bạn nên viết chúng trước khi bạn tái cấu trúc lại công cụ), nhưng nói chung, lợi ích cho tinh thần VÀ cho sản phẩm của chúng tôi là rất lớn. Chúng tôi nhận được một phần trăm phần trăm chất lượng mã tại một thời điểm. Và thật vui khi thấy nó tăng lên !!!
Lưu ý: Một lần nữa, sự cứng nhắc cần phải được lắc để nhường chỗ cho những điều mới và tốt hơn. Trong giai thoại của tôi, bộ phận CNTT của chúng tôi có phần đúng khi cố gắng áp đặt một số điều lên chúng tôi và sai cho những người khác. Hoặc có thể họ đã từng đúng . Nhiều thứ thay đổi. Chứng minh rằng chúng là những cách tốt hơn để tăng năng suất của bạn. Chạy thử và nguyên mẫu là ở đây cho điều này.
Chu trình tái cấu trúc mã Spaghetti siêu bí mật cho chất lượng tuyệt vời
+-----------------+ +-----------------+
| A N A L Y Z E +----->| I D E N T I F Y |
+-----------------+ +---------+-------+
^ |
| v
+--------+--------+ +-----------------+
| C L E A N +<-----| F I X |
+-----------------+ +-----------------+
Khi bạn có một số công cụ chất lượng tại toolbelt của mình:
Phân tích mã của bạn với kiểm tra chất lượng mã.
Linters, phân tích tĩnh, hoặc những gì có bạn.
Xác định các điểm nóng quan trọng của bạn VÀ trái cây treo thấp .
Vi phạm có mức độ nghiêm trọng và các lớp lớn với số lượng lớn mức độ nghiêm trọng cao là một lá cờ đỏ lớn: như vậy, chúng xuất hiện dưới dạng "điểm nóng" trên các kiểu xem của bộ tản nhiệt / bản đồ nhiệt.
Sửa các điểm nóng trước.
Nó tối đa hóa tác động của bạn trong một khung thời gian ngắn vì chúng có giá trị kinh doanh cao nhất. Lý tưởng nhất là các vi phạm nghiêm trọng nên được xử lý ngay khi chúng xuất hiện, vì chúng là các lỗ hổng bảo mật tiềm ẩn hoặc nguyên nhân sự cố và có nguy cơ cao gây ra trách nhiệm pháp lý (và trong trường hợp của bạn, hiệu suất kém cho phòng thí nghiệm).
Làm sạch các vi phạm cấp thấp bằng quét cơ sở mã hóa tự động .
Nó cải thiện tỷ lệ tín hiệu trên tạp âm để bạn có thể thấy các vi phạm đáng kể trên radar của bạn khi chúng xuất hiện. Ban đầu thường có một đội quân vi phạm nhỏ nếu chúng không bao giờ được chăm sóc và cơ sở mã của bạn bị bỏ rơi trong tự nhiên. Chúng không có "rủi ro" thực sự, nhưng chúng làm giảm khả năng đọc và bảo trì của mã. Khắc phục chúng khi bạn gặp chúng trong khi thực hiện một nhiệm vụ hoặc bằng các nhiệm vụ dọn dẹp lớn với quét mã tự động nếu có thể. Hãy cẩn thận với quét tự động lớn nếu bạn không có bộ kiểm tra và hệ thống tích hợp tốt. Đảm bảo đồng ý với đồng nghiệp đúng thời điểm để điều hành họ để giảm thiểu sự khó chịu.
Lặp lại cho đến khi bạn hài lòng.
Mà, lý tưởng nhất, bạn không bao giờ nên, nếu đây vẫn là một sản phẩm hoạt động: nó sẽ tiếp tục phát triển.
Mẹo nhanh để giữ nhà tốt
Khi ở chế độ hotfix , dựa trên yêu cầu hỗ trợ khách hàng:
- Đó thường là cách tốt nhất để KHÔNG đi khắc phục các vấn đề khác, vì bạn có thể giới thiệu những vấn đề mới một cách miễn cưỡng.
- Đi theo nó theo kiểu SEAL: vào trong, tiêu diệt bọ, thoát ra và vận chuyển bản vá của bạn. Đó là một cuộc tấn công phẫu thuật và chiến thuật.
Nhưng đối với tất cả các trường hợp khác , nếu bạn mở một tệp, hãy đặt nó là nhiệm vụ của bạn:
- chắc chắn: xem lại nó (ghi chú, báo cáo vấn đề tập tin),
- có thể: làm sạch nó (dọn dẹp kiểu và vi phạm nhỏ),
- lý tưởng: tái cấu trúc nó (tổ chức lại các phần lớn và neig Harbor của họ).
Chỉ cần không bị lãng phí khi dành một tuần từ tệp này sang tệp khác và kết thúc với một loạt thay đổi lớn của hàng ngàn bản sửa lỗi bao gồm nhiều tính năng và mô-đun - điều này khiến việc theo dõi trong tương lai trở nên khó khăn. Một vấn đề trong mã = một vé trong trình theo dõi của bạn. Đôi khi, một bộ thay đổi có thể tác động đến nhiều vé; Nhưng nếu nó xảy ra quá thường xuyên, thì có lẽ bạn đã làm sai điều gì đó.
Phụ lục: Quản lý môi trường lập trình trực quan
Vườn treo tường của hệ thống lập trình Bespoke
Nhiều hệ thống lập trình, như G2 của OP, là những quái thú khác nhau ...
Không có "Mã"
Thường thì họ không cấp cho bạn quyền truy cập vào biểu diễn văn bản của "mã" nguồn của bạn: nó có thể được lưu trữ ở định dạng nhị phân độc quyền hoặc có thể nó lưu trữ mọi thứ ở định dạng văn bản nhưng giấu chúng khỏi bạn. Các hệ thống lập trình đồ họa Bespoke thực sự không phải là hiếm trong các phòng thí nghiệm nghiên cứu, vì chúng đơn giản hóa việc tự động hóa các quy trình xử lý dữ liệu lặp đi lặp lại.
Không dụng cụ
Bên cạnh của họ, đó là. Bạn thường bị hạn chế bởi môi trường lập trình của họ, trình gỡ lỗi của riêng họ, trình thông dịch riêng của họ, các công cụ và định dạng tài liệu của riêng họ. Chúng là những
khu vườn có tường bao quanh , ngoại trừ nếu cuối cùng chúng thu hút được sự quan tâm của ai đó đủ động lực để đảo ngược các định dạng của chúng và xây dựng các công cụ bên ngoài - nếu giấy phép cho phép.
Thiếu tài liệu
Rất thường xuyên, đây là những hệ thống lập trình thích hợp, được sử dụng trong môi trường khá kín. Những người sử dụng chúng thường xuyên ký NDA và không bao giờ nói về những gì họ làm. Cộng đồng lập trình cho họ rất hiếm. Vì vậy, nguồn lực đang khan hiếm. Bạn đang bị mắc kẹt với tài liệu tham khảo chính thức của bạn, và đó là nó.
Điều mỉa mai (và thường làm nản lòng) là tất cả những điều mà các hệ thống này làm rõ ràng có thể đạt được bằng cách sử dụng các ngôn ngữ lập trình chính thống và mục đích chung, và có lẽ hiệu quả hơn. Nhưng nó đòi hỏi kiến thức sâu hơn về lập trình, trong khi bạn không thể mong đợi nhà sinh vật học, nhà hóa học hoặc nhà vật lý của mình (kể tên một vài người) biết đủ về lập trình, và thậm chí ít có thời gian (và mong muốn) để thực hiện (và duy trì) hệ thống phức tạp, có thể tồn tại hoặc không tồn tại lâu. Vì lý do tương tự, chúng tôi sử dụng DSL, chúng tôi có các hệ thống lập trình bespoke này.
Giai thoại cá nhân 2:Trên thực tế, tôi đã làm việc trên một trong những bản thân mình. Tôi đã không liên kết với yêu cầu của OP, nhưng dự án của tôi là một bộ phần mềm xử lý dữ liệu và lưu trữ dữ liệu lớn được kết nối với nhau (chủ yếu dành cho nghiên cứu tin học sinh học, chăm sóc sức khỏe và mỹ phẩm, mà còn dành cho doanh nghiệp thông minh, hoặc bất kỳ miền nào ngụ ý theo dõi khối lượng lớn dữ liệu nghiên cứu dưới bất kỳ hình thức nào và chuẩn bị quy trình xử lý dữ liệu và ETLs). Một trong những ứng dụng này, khá đơn giản, là một IDE trực quan sử dụng chuông và còi thông thường: giao diện kéo và thả, không gian làm việc của dự án được phiên bản (sử dụng tệp văn bản và tệp XML để lưu trữ siêu dữ liệu), rất nhiều trình điều khiển có thể cắm vào nguồn dữ liệu không đồng nhất và trực quan canvas để thiết kế các đường ống để xử lý dữ liệu từ N nguồn dữ liệu và cuối cùng tạo ra các đầu ra được chuyển đổi M, và có thể trực quan hóa sáng bóng và báo cáo trực tuyến phức tạp (và tương tác). Hệ thống lập trình trực quan bespoke điển hình của bạn, mắc một chút hội chứng NIH dưới sự giả vờ thiết kế một hệ thống phù hợp với nhu cầu của người dùng.
Và, như bạn mong đợi, đó là một hệ thống đẹp, khá linh hoạt cho nhu cầu của nó mặc dù đôi khi hơi quá mức để bạn tự hỏi "tại sao không sử dụng các công cụ dòng lệnh thay thế?", Và không may luôn dẫn đầu ở quy mô trung bình các nhóm làm việc trong các dự án lớn cho nhiều người khác nhau sử dụng nó với các thực tiễn "tốt nhất" khác nhau.
Tuyệt vời, chúng tôi đã bị lúng túng! - Chúng ta làm gì về nó?
Vâng, cuối cùng, tất cả các bên trên vẫn giữ. Nếu bạn không thể trích xuất hầu hết các chương trình từ hệ thống này để sử dụng các công cụ và ngôn ngữ chính hơn, bạn "chỉ cần" điều chỉnh nó theo các ràng buộc của hệ thống.
Về phiên bản và lưu trữ
Cuối cùng, bạn hầu như luôn có thể phiên bản mọi thứ, ngay cả với môi trường bị ràng buộc và có tường nhất. Thường xuyên hơn không, các hệ thống này vẫn đi kèm với phiên bản riêng của chúng (điều không may thường khá cơ bản và chỉ cung cấp để trở lại các phiên bản trước mà không có nhiều khả năng hiển thị, chỉ giữ các ảnh chụp nhanh trước đó). Nó không chính xác bằng cách sử dụng các thay đổi khác biệt như SCM của bạn có thể và có thể không phù hợp với nhiều người dùng gửi thay đổi cùng một lúc.
Tuy nhiên, nếu họ cung cấp chức năng như vậy, có lẽ giải pháp của bạn là tuân theo các hướng dẫn tiêu chuẩn công nghiệp yêu thích của chúng tôi ở trên và chuyển chúng sang hệ thống lập trình này !!
Nếu hệ thống lưu trữ là một cơ sở dữ liệu, nó có thể hiển thị các chức năng xuất hoặc có thể được sao lưu ở cấp hệ thống tệp. Nếu nó sử dụng định dạng nhị phân tùy chỉnh, có thể bạn chỉ cần thử phiên bản nó với một VCS có hỗ trợ tốt cho dữ liệu nhị phân. Bạn sẽ không có quyền kiểm soát chi tiết, nhưng ít nhất bạn sẽ có phần lưng được bảo vệ chống lại thảm họa và có một mức độ tuân thủ khắc phục thảm họa nhất định.
Về kiểm tra
Thực hiện các thử nghiệm của bạn trong chính nền tảng và sử dụng các công cụ bên ngoài và công việc nền để thiết lập sao lưu thường xuyên. Rất có thể, bạn kích hoạt các thử nghiệm này giống như bạn sẽ kích hoạt các chương trình được phát triển với hệ thống lập trình này.
Chắc chắn, đó là một công việc hack và chắc chắn không theo tiêu chuẩn phổ biến cho lập trình "bình thường", nhưng ý tưởng là thích nghi với hệ thống trong khi cố gắng duy trì một quy trình phát triển phần mềm chuyên nghiệp.
Con đường dài và dốc ...
Như mọi khi với môi trường thích hợp và các hệ thống lập trình bespoke, và như chúng tôi đã trình bày ở trên, bạn xử lý các định dạng lạ, chỉ một bộ hạn chế (hoặc hoàn toàn không tồn tại) của các công cụ có thể cồng kềnh và thay thế cho cộng đồng.
Khuyến nghị: Cố gắng thực hiện các hướng dẫn bên ngoài bên ngoài hệ thống lập trình bespoke của bạn, càng nhiều càng tốt. Điều này đảm bảo rằng bạn có thể dựa vào các công cụ "phổ biến", có hỗ trợ cộng đồng và ổ đĩa cộng đồng phù hợp.
Giải pháp thay thế: Khi đây không phải là một tùy chọn, hãy thử trang bị thêm khung toàn cầu này vào "hộp" của bạn. Ý tưởng là phủ lớp kế hoạch chi tiết này của các thực tiễn tốt nhất theo tiêu chuẩn công nghiệp lên trên hệ thống lập trình của bạn và tận dụng tốt nhất nó. Lời khuyên vẫn được áp dụng: xác định cấu trúc và thực tiễn tốt nhất, khuyến khích sự phù hợp.
Thật không may, điều này ngụ ý rằng bạn có thể cần phải lao vào và thực hiện một số lượng lớn công việc chân. Vì thế...
Những từ cuối cùng nổi tiếng và những yêu cầu khiêm tốn:
- Tài liệu mọi thứ bạn làm.
- Chia sẻ kinh nghiệm của bạn.
- Nguồn mở bất kỳ công cụ nào bạn viết.
Bằng cách làm tất cả những điều này, bạn sẽ:
- không chỉ tăng cơ hội nhận được sự hỗ trợ từ mọi người trong những tình huống tương tự,
- nhưng cũng cung cấp trợ giúp cho những người khác và thúc đẩy thảo luận xung quanh công nghệ của bạn.
Ai biết được, bạn có thể vào đầu rất của một cộng đồng sôi động mới của Obscure Ngôn ngữ X . Nếu không có, bắt đầu một!
Có thể bên trong nó rất đẹp , nhưng không ai có đầu mối cho đến nay, vì vậy hãy giúp gỡ bức tường xấu xí này và để người khác nhìn trộm!