Là mã tốt không thể trong phát triển phần mềm hiện đại? [đóng cửa]


19

Dường như ngay cả các công cụ dành cho nhà phát triển đã trở nên vững chắc và mạnh mẽ hơn, viết mã tốt đã trở thành một thách thức. Ngay cả những công cụ đó mạnh hơn, chất lượng mã vẫn chưa tốt hơn. Tôi đưa ra hai yếu tố quan trọng, có ít thời gian hơn và các dự án phức tạp hơn. Bởi vì các công cụ chúng ta sử dụng ngày nay mạnh hơn nên việc viết mã phức tạp sẽ dễ dàng hơn, nhưng không có thời gian để lập kế hoạch và không nhìn lại làm giảm chất lượng mã và tăng lỗi và bảo trì. Không phải là chúng tôi đã không viết mã phức tạp trước đây. Đó là chúng tôi viết mã phức tạp hơn.

Câu hỏi của tôi là như sau: Xem xét chúng ta có ngôn ngữ và công cụ mạnh hơn.

  • Tại sao viết mã tốt lại khó hơn?
  • Các yếu tố, thời gian và sự phức tạp có đóng góp cho điều này?
  • Là phương pháp không được thực hành chính xác?

Loại dự án tôi xem xét là ứng dụng doanh nghiệp với độ phức tạp lớn và logic kinh doanh. Định nghĩa về mã tốt của Viking là cá nhân, xin vui lòng không bị mắc kẹt trong việc giải thích mã tốt.

Câu trả lời:


34

Như DeMarco và Lister đã nêu trong Peopleware khoảng 20 năm trước, phần lớn các dự án phần mềm thất bại không phải do những thách thức kỹ thuật, mà là vấn đề xã hội học . Điều này đã không thay đổi trong những thập kỷ qua, bất kể công cụ của chúng tôi đã cải thiện bao nhiêu.

Quản lý sai, kỳ vọng không thực tế, không có được đúng người cho công việc, và / hoặc không để họ làm công việc của họ, do đó không giữ được họ; nơi làm việc và các công cụ không phù hợp với công việc phát triển SW; giải quyết mâu thuẫn cá nhân; chính trị ; đây chỉ là một vài trong số những vấn đề điển hình có thể khiến dự án bị tiêu diệt ngay từ đầu.

Tại sao viết mã tốt lại khó hơn?

Tôi không hoàn toàn tin rằng việc viết mã tốt bây giờ thực sự khó hơn so với nhiều thập kỷ trước. Trong thực tế, so với mã máy hoặc lắp ráp, mọi thứ chúng ta có trong dòng chính là cách dễ dàng hơn để xử lý. Chỉ cần chúng tôi có thể cần phải sản xuất nhiều hơn nữa.

Có phải chỉ vì các yếu tố đề cập, thời gian và sự phức tạp?

Có, độ phức tạp có thể đạt được chắc chắn đã tăng (và tiếp tục tăng) khi sức mạnh của các công cụ của chúng tôi tăng lên. Nói cách khác, chúng tôi tiếp tục đẩy ranh giới. Theo tôi dịch là khó giải quyết những thách thức lớn nhất hiện nay như cách đây 30 năm để giải quyết những thách thức lớn nhất của ngày hôm đó.

OTOH vì lĩnh vực này đã phát triển rất lớn, có nhiều vấn đề "nhỏ" hoặc "đã biết" hơn so với 30 năm trước. Những vấn đề này về mặt kỹ thuật (không nên) (không) là một thách thức nữa, nhưng ... ở đây nhập vào câu châm ngôn trên :-(

Ngoài ra số lượng lập trình viên đã tăng lên rất nhiều. Và ít nhất nhận thức cá nhân của tôi là mức độ kinh nghiệm và kiến ​​thức trung bình đã giảm, đơn giản vì có nhiều đàn em đến trường liên tục hơn so với những người cao niên có thể giáo dục họ.

Có phải là phương pháp không được thực hành chính xác?

IMHO chắc chắn là không. DeMarco và Lister có một số từ ngữ gay gắt về Phương pháp big-M. Họ nói rằng không có Phương pháp nào có thể làm cho một dự án thành công - chỉ những người trong nhóm mới có thể. OTOH các phương pháp nhỏ mà họ ca ngợi khá gần với những gì chúng ta gọi là "nhanh nhẹn", đang lan truyền rộng rãi (IMHO vì một lý do chính đáng). Không đề cập đến các thực hành tốt như kiểm tra đơn vị và tái cấu trúc, mà chỉ 10 năm trước không được biết đến rộng rãi, và ngày nay thậm chí nhiều sinh viên tốt nghiệp biết những điều này.


2
Không phải là một ngữ pháp Đức quốc xã hay bất cứ điều gì nhưng 'phi thực tế' (Trong đoạn thứ hai) không phải là một từ. Tôi nghĩ bạn có nghĩa là 'không thực tế'.

Tôi chỉ có thể hỗ trợ vấn đề "Thiếu niên". Tôi là một trong số họ và tôi chắc chắn ước mình có một người cố vấn để giúp tôi. Thật biết ơn vì Internet có mặt ngày hôm nay, và Amazon và SO giúp đỡ, nhưng vẫn ...
Matthieu M.

1
+1: Cũng cần lưu ý, vì sự thay đổi và tăng trưởng nhanh chóng của các công cụ / công nghệ / phương pháp, ở một mức độ nhất định, tất cả chúng ta đều là đàn em ít nhất một vài lần trong năm. Kinh nghiệm chỉ cho phép một số bác sĩ thú y tăng tốc nhanh hơn một số jrs.
Steven Evers

Tôi từ chối thực hiện câu hỏi này một cách nghiêm túc trừ khi chúng ta không có quy tắc chính thức nào để tách mã đẹp khỏi mã xấu.
shabunc

17

Các vấn đề liên quan đến tiền mã hóa theo thời hạn không thực tế và xử lý nợ kỹ thuật đã được biết đến kể từ Weinberg '71 và Brooks '72. Tài liệu trở nên khó đào lên trực tuyến trước đó, nhưng tôi khá chắc chắn rằng có các báo cáo cũ của CDC, IBM và NASA nói điều tương tự.


1
+ Đối với "nợ kỹ thuật" và tài liệu tham khảo.
Amir Rezaei

10

Tôi nghĩ tất cả chúng ta đều có những ý tưởng và ngưỡng riêng cho "Mã tốt". Tuy nhiên, có một số vấn đề mà tất cả đều đóng góp:

  • Việc áp dụng sai "làm cho nó hoạt động sau đó cải thiện nó" có nghĩa là chúng ta để lại mã chết và 10 biến thể khác nhau của cùng một phương thức trong đó mỗi biến thể chỉ được sử dụng một lần trong cơ sở mã. Những thứ này dường như không bao giờ được làm sạch.
  • Thiếu thời gian và ngân sách. Khách hàng muốn 100 tính năng mới trong 3 tháng, một số tính năng không tầm thường và họ không muốn chi bất kỳ khoản tiền nào cho những thứ họ không thể thấy trực tiếp.
  • Thiếu quan tâm. Hãy đối mặt với nó, một số nhà phát triển quan tâm đến cách mã nhìn và hành xử hơn những người khác. Xem điểm đầu tiên cho một ví dụ.
  • Chúng tôi thực sự không biết làm thế nào để tạo ra "mã tốt". Khái niệm về mã tốt của tôi liên tục phát triển. Những gì tôi nghĩ là tốt một thập kỷ trước không còn tốt nữa.
  • "Mã tốt" là một đánh giá giá trị. Khác với "nó hoạt động" và không có lỗi nào được biết đến, bất kỳ tiêu chí nào khác cho mã tốt về cơ bản là vấn đề quan điểm.

Cuối cùng, tôi nghĩ tốt nhất là theo đuổi tốt hơn là theo đuổi "tốt" hay "tốt nhất". Nếu chúng ta thấy mã tốt nhất ngoài đó, chúng ta sẽ nhận ra nó như vậy chứ?


1
+1 Điểm tốt. Bởi "mã tốt" tôi đã không đề cập đến mã hoàn hảo. Mã hoàn hảo không tồn tại. Mã tốt là một mã không làm bạn đau đầu, ví dụ như nó cũng được nghĩ đến.
Amir Rezaei

1
Điểm tuyệt vời về "mã tốt" là một mục tiêu di động. Tuy nhiên, tôi không đồng ý với nó chỉ là một đánh giá giá trị. Tôi tin rằng mã sạch sẽ dễ dàng hơn để kiểm tra đơn vị, mở rộng và duy trì hơn mã lộn xộn, do đó rẻ hơn về mặt lâu dài. Tất nhiên, vì chúng tôi thường không chạy thử nghiệm mù đôi với các nhóm kiểm soát trong các dự án SW thực sự ;-), chỉ có bằng chứng giai thoại cho điều này, không có bằng chứng khoa học cứng.
Péter Török

Có vẻ như cả hai định nghĩa hiện tại của chúng tôi về "mã tốt" đều đồng ý. Tuy nhiên, tôi đã thấy một số ví dụ khá xuất sắc về thiết kế API tốt giúp cuộc sống của tôi dễ dàng hơn rất nhiều - nhưng thư viện không có bài kiểm tra đơn vị. Điều đó không có nghĩa là nó không được thử nghiệm, chỉ là không có gì để tự động hóa thử nghiệm. Tôi đang rời khỏi phòng cho điều đó.
Berin Loritsch

8

Tại sao viết mã tốt lại khó hơn?

Bởi vì phần mềm đang ngày càng được xây dựng dựa trên các lớp trừu tượng. Mỗi công nghệ mới tuyên bố giúp phát triển dễ dàng hơn và nhanh hơn chỉ cần thêm một mức độ phức tạp mà nhà phát triển cần phải hiểu. Bây giờ, những sự trừu tượng này có thể mang lại lợi ích to lớn cho năng suất, nhưng nếu bạn không hiểu những gì chúng đang cố gắng che giấu thì nó làm cho phần mềm dễ bị lỗi hơn và chất lượng kém.


+1 Điểm rất tốt, các công cụ mới làm tăng năng suất có thể dẫn đến sự phức tạp hơn.
Amir Rezaei

1
+1. Còn được gọi là "Luật trừu tượng rò rỉ". :)
Bàn Bobby

6

Là mã tốt không thể trong phát triển phần mềm hiện đại?

Thật vậy, nó là không thể. Nhưng không phải vì bất kỳ lý do nào mà bạn đã nghe.

Phạm vi của phần lớn các dự án vượt quá khả năng của bộ não con người. Đó là lý do tại sao mọi người nghĩ ra ý tưởng trừu tượng , đó là giấu chi tiết và trèo lên cây trừu tượng cao hơn cho đến khi mật độ của các nhánh (lượng thông tin cần xử lý) giảm xuống mức chấp nhận được.

Chúng tôi đã làm điều đó, chúng tôi đã giải quyết vấn đề phức tạp, nhưng điều đó đã không loại bỏ vấn đề lớn hơn mà chúng tôi có trước đây.

Nó vẫn còn quá phức tạp để chúng tôi xử lý.

Để tạo ra một giải pháp chất lượng cao, chúng ta cần có thể đồng thời nhìn và hiểu mọi thứ cùng một lúc, đó là tất cả các mô-đun tại một chi tiết lớn và tất cả các chi tiết triển khai. Tất cả cùng một lúc để thấy sự khác biệt, xem từng đoạn mã trong bối cảnh của tất cả các kịch bản có thể và tối ưu hóa toàn bộ cơ sở mã cùng một lúc.

Chúng tôi sẽ không bao giờ có thể làm điều đó.

Và nếu chúng ta không thể tạo ra mã chất lượng.

Người quản lý sẽ thấy sự phân tán của các mô-đun nhưng sẽ không biết các vấn đề và giới hạn nội bộ trên mỗi mô-đun.

Các lập trình viên mô-đun sẽ biết các giới hạn cục bộ nhưng sẽ không thể tối ưu hóa nó trong bối cảnh của một bức tranh lớn hơn.

Không có cách nào để giao tiếp hiểu biết giữa người quản lý và lập trình viên (và thậm chí giữa các lập trình viên). Và thậm chí nếu có, năng lực của bộ não con người không thể xử lý được điều đó.

Chúng ta có thể làm rất ít ngoại trừ tiếp tục cố gắng (một bài tập vô ích). Chúng ta hãy giữ mã ít nhiều hoạt động và tận hưởng cuộc sống.


Tôi thích câu trả lời này, nếu chỉ không được viết bằng giọng điệu bi quan, mệt mỏi như vậy ...
Timwi

1
@Timwi: Không bi quan thực sự. Được cho là mang lại cho bạn một gánh nặng. :)

4

Tôi phủ nhận tiền đề của câu hỏi của bạn. Việc viết mã tốt trở nên dễ dàng hơn bao giờ hết và do đó chúng tôi đã giải quyết các vấn đề khó khăn hơn nhiều mà chúng tôi đã giải quyết trước đây.

Tôi không muốn chọn bất kỳ nhà cung cấp cụ thể nào, nhưng so sánh Windows 1.0 với Windows 7. Cái sau chứa mã nhiều hơn hàng nghìn lần, nhưng thời gian trung bình giữa các sự cố đã tăng gấp trăm lần. Chúng tôi đã được cho là có thể nhúng bảng tính Excel vào tài liệu Word kể từ Windows 3.1, nhưng ngày nay nó thực sự hoạt động ít nhiều.

Không muốn rơi vào tình cảm "Bạn trẻ con ngày nay với việc gõ vịt và VM", tôi sẽ đề nghị bạn không biết việc viết mã tốt trở lại như thế nào trong những năm 80: mô hình bộ nhớ TINY, NHỎ và HUGE, lớp phủ , các cuộc gọi hệ điều hành không thuê (shudder). Tốt cho tất cả điều đó.


Ghét đi lạc đề, nhưng cá nhân tôi cho rằng Windows 1.0 đến 3.11 thực sự rất ổn định, có lẽ do sự thiếu phức tạp của chúng. Các phiên bản cao nhất của Windows là 95, 98 và ME. Tất nhiên, những phiên bản nào đã được cải tiến tốt theo cách khác là một vấn đề khác.
Timwi

Điều gì về mã hóa trên máy tính mini hoặc máy tính lớn thay vì hệ thống năng lượng thấp? Các vấn đề bạn tham khảo có liên quan đến model Intel 8086 ...
Paul Nathan

@Paul, 8086 vấn đề là những vấn đề tôi quan tâm nhất, vì vậy chúng xuất hiện rất nhiều trong tâm trí tôi. Tuy nhiên, các công cụ để viết phần mềm ngay cả trên máy tính lớn rất thô sơ theo tiêu chuẩn hiện đại. Các biên tập viên thường gần với edlin hơn so với họ. Cuối năm 1982, tôi đã sử dụng NUROS (Hệ điều hành từ xa của Đại học Nebraska) trên phần cứng của IBM. Các công việc đã được lập trình và chạy bằng thẻ đục lỗ 'ảo'. Và chúng ta đừng quên các lỗi Y2K, chủ yếu là khắc phục sự cố lớn bằng cách hạn chế nhận thức về lưu trữ.
Charles E. Grant

2

Các ứng dụng hiện đại phức tạp hơn họ 20-30 năm trước đây, bởi vì môi trường của họ là phong phú hơn và linh hoạt hơn.

Đó là điển hình cho một chương trình DOS ngồi trong một vòng lặp chặt chẽ chờ đợi lần nhấn phím tiếp theo từ người dùng, sau đó gọi mã tương ứng và quay lại để chờ nhấn phím tiếp theo.

Bất kỳ ứng dụng hiện đại nào mà bạn không thể sử dụng chuột ở TẤT CẢ cho bất cứ điều gì, đều có vấn đề giải thích nghiêm trọng. Và mọi thứ có thể xảy ra theo bất kỳ thứ tự nào, vì người dùng hoàn toàn có thể nhập, nhấp chuột và tiếp tục nhập trong khi nguồn cấp RSS đang được cập nhật trong ứng dụng hiển thị các mục mới nhất cho người dùng khi anh ta nhập.

Tất cả những thứ đa tác vụ này thực chất phức tạp hơn nhiều so với khi tất cả những gì bạn phải nghĩ là chìa khóa từ người dùng. Điều đó làm cho nó khó hơn để viết mã thực sự tốt.

Hy vọng khi các nhà nghiên cứu tìm ra cách chúng ta có thể làm cho các chương trình đa tác vụ trở nên hữu dụng hơn theo quan điểm của các nhà phát triển, điều này có thể giảm bớt nhưng hiện tại chúng ta đang bị mắc kẹt với mọi người đang cố gắng làm tốt, nhưng không biết phải làm thế nào nó


+1 "Các ứng dụng hiện đại phức tạp hơn so với 20-30 năm trước"
Amir Rezaei

2

Dường như với tôi rằng phần mềm đã mở rộng để lấp đầy tốc độ xử lý, bộ nhớ, đĩa và thời gian lập trình viên có sẵn. Người ta có thể khẳng định rằng đó là vì phần mềm hoàn thành nhiều hơn thế. Chà, tôi chắc chắn rằng nó còn hoàn thành được nhiều hơn thế, nhưng không đủ để biện minh cho sự phình to.

Tôi nghĩ có một định luật khoa học cổ xưa đáng để ghi nhớ:

Thiên nhiên ghét chân không.

Francois Rabelas (nhà sư và nhà châm biếm người Pháp 1494-1553)


1

Trên thực tế, tôi nghĩ việc viết mã tốt trở nên dễ dàng hơn, tức là các chương trình hoạt động như mong đợi và có thể duy trì được, trong thập kỷ qua. Các công cụ có sẵn giờ đã tốt hơn, các lib đã trưởng thành và toàn diện hơn, phần cứng đã trở nên nhanh hơn rất nhiều vì vậy chúng tôi không phải sử dụng các thủ thuật tối ưu hóa.

Vậy tại sao chúng ta không?

IMO lý do chính là chúng tôi liên tục tìm cách và lý do để lạm dụng mọi thứ. Thay vì đi theo cách cũ, dễ dàng, có thể nhàm chán, như tạo một Windows thực thi, chúng tôi đẩy các ranh giới có thể và tìm cách để ví dụ như tái tạo một cái gì đó như PhotoShop như một ứng dụng web. Tại sao? Bởi vì chúng ta có thể. Hoặc ít nhất chúng ta nghĩ như vậy.


1
Tôi không đồng ý với hàm ý rằng nên tránh đổi mới và các công nghệ hoặc phương pháp lỗi thời không bao giờ bị lỗi thời. Cũng có thể dừng viết bất kỳ chương trình nào sau đó và chỉ sử dụng những gì chúng tôi có ...
Timwi

Timwi: Tôi không tranh cãi về sự đổi mới. Đó chỉ là lý do mà rất khó để viết mã tốt.
dùng281377

1

Lần cuối cùng BẤT CỨ AI không viết một khai thác hoặc nghiên cứu để làm như vậy đi vòng quanh với lắp ráp (không tính các tin tặc hạt nhân và kẻ ASIC)? Có bao nhiêu lỗi đã được phát hiện trong các thư viện lõi C? Hầu như không có và một vài. Tất cả tôi đang nói là mọi người có khả năng mã xuất sắc. Các công cụ và ngôn ngữ tốt hơn chỉ làm cho nó ít 'bắt buộc' hơn và 'tùy chọn' hơn. Không phải tôi nghĩ rằng tất cả chúng ta nên viết mã thực sự khủng khiếp, nhưng khi tôi nghĩ về các cấu trúc logic phức tạp ... không ai có thể mơ ước viết một cái gì đó với các mảng băm trong tập hợp. Phải có một cách 'tốt hơn' để xử lý logic thay vì sử dụng một cấu trúc phức tạp. Ngay cả khi mã đẹp, đôi khi cách tiếp cận không thanh lịch. Tôi nghĩ rằng nó sắp xếp các vấn đề bạn đề cập. Mã tốt không phải lúc nào cũng được tổ chức,


Hệ thống nhúng kẻ viết một số lượng tốt của lắp ráp.
Paul Nathan


0

Tôi nghĩ rằng đó là bởi vì các công cụ tốt hơn và máy tính phản ứng nhanh hơn nhanh hơn có nghĩa là chúng tôi hy vọng sẽ nhận được nhiều thời gian phức tạp hơn cho sản phẩm cuối cùng so với vài năm trước (hoặc vài thập kỷ). Vì vậy, sự phức tạp của các ứng dụng tiếp tục tăng và các giả định của chúng tôi về mức độ năng suất hợp lý đang tiếp tục tăng.

Nơi tôi làm việc, các nhà phát triển luôn vội vàng (vì luôn có nhiều thứ mà khách hàng muốn sau đó họ có thời gian). Vì vậy, rất nhiều khối mã được sao chép với chỉnh sửa tối thiểu và không cần nỗ lực để thực sự hiểu chúng. Và tất nhiên lỗi được thực hiện. Tôi chỉ thấy một lỗi được sửa, trong đó một nhà phát triển đã sao chép một số mã mà tôi đã tối ưu hóa, mà không nhận ra rằng các giả định làm cho việc tối ưu hóa hợp lệ không đúng với nơi anh ta đặt nó.

Tất cả điều này xuất phát từ kỳ vọng, cả nội bộ (kỳ vọng của chúng ta) và của các tổ chức của chúng ta. Chúng tôi cố gắng làm càng nhiều càng tốt trong thời gian ngắn nhất có thể. Và lỗi tất yếu dẫn đến.

Ngoài ra khả năng đáp ứng của máy tính khuyến khích chỉnh sửa nhanh nhanh, sau đó chạy biên dịch và chạy thử. Ngày xưa (như 35 năm trước), việc quay vòng rất chậm, tôi sẽ in mã ra (nguồn là thẻ đục lỗ) và thực hiện một bước thủ công của mã trước khi gửi bộ bài của tôi. Bây giờ, chúng tôi chỉ cần chỉnh sửa biên dịch và thực thi. Vì vậy, rất nhiều lỗi chúng tôi đã phát hiện ra, thông qua hướng dẫn mã phương pháp, bây giờ chúng tôi dựa vào trình biên dịch và / hoặc bộ kiểm tra đơn vị để bắt thay thế.


Nghe có vẻ như một công ty trẻ chưa biết rằng rẻ nhất là làm ngay lần đầu tiên ...

Thorbjorn: Thật đáng ngạc nhiên nó đã tồn tại gần ba thập kỷ. Và nó thực sự làm khá tốt. Tất nhiên có những mô hình kinh doanh rất đáp ứng yêu cầu của khách hàng (chúng tôi), và một số mô hình được định hướng rất chất lượng. Thật sự rất khó để được cả hai.
Omega Centauri

0

Làm thế nào mà mọi người trở nên tồi tệ hơn trong việc sản xuất mã tốt?

Nếu bạn mất NET và một ngôn ngữ như C #, ví dụ (và tôi nhận ra nó không phải là nền tảng duy nhất / ngôn ngữ), tôi muốn lập luận rằng mã hóa cũng đã trở thành xa, xa dễ dàng hơn do sự tự động hóa nhiều thứ trong Visual Studio môi trường.

Nếu bất cứ điều gì, thực tế đơn giản là bây giờ chúng ta có IDE rất tinh vi có khả năng hướng dẫn chúng ta trong quá trình mã hóa và phát triển đang làm cho "mã tốt" dễ dàng đạt được hơn.

Các lập trình viên bây giờ có thể tập trung vào việc thực sự tạo ra cấu trúc tốt thay vì dành quá nhiều thời gian chỉ cần gõ dấu ngoặc và dấu ngoặc và dòng mới và ghi nhớ các cuộc gọi phương thức và tên lớp.

Hai xu của tôi.



-2

chất lượng mã chưa tốt hơn

xin đừng bị mắc kẹt trong việc giải thích mã tốt

Tautology logic tuyệt vời.

Mã không trở nên tốt hơn bởi vì mọi người tiếp tục di chuyển định nghĩa "tốt".

Nếu bạn có thể 'thảo luận về "mã tốt", thì bạn không thể so sánh và bạn thực sự không thể quyết định liệu đó có phải là "thử thách" hay không.


Đối với tôi "mã tốt" là như vậy nó làm giảm số lượng lỗi. Bây giờ có thể được thực hiện bằng nhiều cách.
Amir Rezaei

@Amir Rezaei: "Định nghĩa về mã tốt của Viking là cá nhân". "Code mã tốt" sao cho nó giảm số lỗi "Vui lòng chọn chỉ một định nghĩa và cập nhật câu hỏi của bạn để chỉ bao gồm một định nghĩa.
S.Lott

Chà "code mã tốt" sao cho nó giảm số lỗi "là ý tưởng cá nhân của tôi về" mã tốt ". Tôi nghĩ mọi người đều biết khi nào dự án cần dọn dẹp hay không .
Amir Rezaei

@Amir Rezaei: Đây là quan điểm của tôi. Nếu bạn không thể (hoặc sẽ không) định nghĩa "tốt" trong câu hỏi, thì chúng tôi không thể so sánh. Bạn có thể yêu cầu số lượng lỗi là như nhau. Một số người khác có thể tuyên bố rằng chi phí lỗi đi xuống. Một người khác có thể cho rằng rủi ro kinh doanh do lập kế hoạch cho lỗi tăng lên. Không có một định nghĩa duy nhất về "tốt", tất cả chúng ta có thể nói về những điều khác nhau. Hãy cập nhật câu hỏi.
S.Lott

Mã tốt: nó được biên dịch, vượt qua các thử nghiệm, nhận được sự chấp thuận của người dùng và được đưa vào sản xuất. Chỉ hy vọng không ai muốn thay đổi nó.
JeffO
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.