Hướng dẫn how many lines of code is a lot in python? - Có bao nhiêu dòng mã trong python?

Xin chào! Tôi là một bot! Đối với tôi, có vẻ như bài đăng của bạn có thể phù hợp hơn với R/Learnpython, một phụ hướng đến các câu hỏi và tìm hiểu thêm về Python. Điều đó nói rằng, tôi là một bot và thật khó để nói. Tôi rất khuyên bạn nên đăng câu hỏi của bạn ở đó. Vui lòng làm theo các quy tắc và hướng dẫn của phụ Khi bạn đăng ở đó, nó sẽ giúp bạn nhận được câu trả lời tốt hơn nhanh hơn.

Trong khi tôi đã ở đó, tôi đã kiểm tra Stack Overflow nhưng tôi không thể tìm thấy kết quả hữu ích

Mặc dù cảnh báo công bằng, phần này của mã tôi đang được phát triển và tôi không hy vọng các liên kết này sẽ rất hữu ích.

Bot này được viết và quản lý bởi /u /iamkindofcreative


10.000 dòng được cho là 'lớn'? WTF?

Tôi viết một cái gì đó như 25kloc/năm [mã vận chuyển, nói chung là những thứ rất phức tạp] và tôi thậm chí không lập trình toàn thời gian. Hai dự án tôi đang thực hiện bây giờ là 35kloc [dự án nhỏ hơn] và 250kloc [quy mô trung bình].

Nếu ai đó nghĩ rằng 10kloc là lớn, tôi có một thời gian khó khăn khi nghĩ về người đó như một lập trình viên chuyên nghiệp.

[Số được liệt kê ở đây, loại trừ các dòng trống và nhận xét.]


Bạn viết bao nhiêu vấn đề? Bạn xóa bao nhiêu?

Tôi có một dự án là 5k dòng mã và khoảng 11k các thử nghiệm và thông số kỹ thuật [dưa chuột]. Đây là một bản viết lại của một dự án là 50k dòng mã với các dòng thử nghiệm 1,2k và có ít chức năng và tính năng hơn so với những gì nó làm bây giờ.

Các dòng mã là vô nghĩa khi nói đến bao nhiêu giá trị họ cung cấp. Cá nhân tôi thích khi một cơ sở mã nhỏ hơn vì điều đó có nghĩa là một số suy nghĩ đã được đưa vào đó và rất có thể có ít lỗi hơn.


Tôi tin rằng các trò chơi của Jblows [bện, nhân chứng] có ít dòng mã hơn so với người ta thường mong đợi. Tôi nghĩ rằng bạn nên cho rằng anh ấy không viết mã như một nhà thầu chính phủ.


Upvote cho nhà thầu chính phủ, tôi đã từng thấy các dòng mã 5K để thay đổi địa chỉ đơn giản ở mặt trước một mình !!!


Tôi đã nói mã vận chuyển, theo đó tôi đặc biệt có nghĩa là còn lại sau tất cả các lần xóa [trong đó có rất nhiều].


Một số lợi ích trong sự đồng ý là từ ngôn ngữ có vẻ như nhưng tôi nghĩ trường hợp này rất nhiều từ quan điểm về việc tận dụng các khung và thư viện mà bản thân chúng khá lớn hơn một chút so với ứng dụng. Tôi đã nhân bản một vài kho lưu trữ và loại trừ dụng cụ được sử dụng để tài liệu, thử nghiệm, v.v. Nó không đủ điều kiện vì tôi chỉ muốn có được một con số bóng nhưng chúng tôi có:

    1.4 million lines of Erlang

    309 thousand lines of C

    120 thousand lines of Elixir
... và rất nhiều mã khác và những thứ tôi đã loại trừ. Đây là những dòng mã, không tính các đường trống hoặc các bình luận.

Bây giờ chúng ta có thể lập luận rằng chúng ta có thể mở số đếm này ở bất kỳ lớp nào? Tại sao dừng lại ở Erlang/OTP? Tại sao không bao gồm thời gian chạy C và kernel? Hiệu ứng thực sự ở đây là rất nhiều mã này thực hiện những thứ được sử dụng trực tiếp bởi các ứng dụng Phoenix, vì vậy tôi nghĩ rằng thật công bằng khi nói, đó là sự quan tâm đến từ việc tận dụng mã khác.

[Tôi không viết mã Elixir nhưng tôi đã thấy một số kết quả tốt từ các đội có. Không ai trong số đó là phép thuật.]


Tôi thực sự không nghĩ rằng người ta có thể đánh giá công việc của người khác bằng dòng mã mà anh ta viết một năm. Tôi nghĩ rằng thất bại quản lý IBM đã chứng minh rằng loại số liệu là vô nghĩa. Hơn nữa, 10.000 dòng Elixir/Ruby không giống như 10.000 Java không làm được gì nhiều ngoại trừ các phụ thuộc hệ thống dây điện.


THẬT. Dòng 10k ror = 100k dòng jee. Nhiều hơn hoặc ít hơn.

.


Một điều thú vị tôi đã tìm thấy với trải nghiệm hạn chế của mình với Elixir là mã rất nhỏ gọn. Những gì thường sẽ mất hơn 10 loc trong các ngôn ngữ khác có thể được biểu thị ngắn gọn là 1-2 dòng.

Nhưng tôi nói chung đồng ý với việc bạn đảm nhận nó :]


> thường sẽ lấy hơn 10 loc trong các ngôn ngữ khác có thể được biểu thị ngắn gọn là 1-2 dòng.

Mỗi lần tôi nghe thấy loại yêu cầu này [với các ngôn ngữ hiện đại], hóa ra nó không đúng ngoại trừ mã tầm thường hoặc mã xấu người rơm trong ngôn ngữ 'lớn hơn'. Vì vậy, nếu bạn có các ví dụ trong thế giới thực có nỗ lực trong thế giới thực, tôi muốn xem chúng! [Tôi sẽ rất vui khi sai.]

Tăng năng suất 5x-10x sẽ rất lớn nếu nó thực sự tồn tại; Nó sẽ không thể ngăn cản đến mức mọi người sẽ chuyển sang ngôn ngữ thực sự mới ngay lập tức. Điều đó đã không xảy ra, đó là một manh mối mà có thể sự gia tăng không có ở đó.

Ngay cả việc giảm 20% chi phí kỹ thuật sẽ lớn đến mức không thể tin được.


Các máy chủ ổ cắm đồng thời, phủ đầu với xử lý lỗi mạnh mẽ là "tầm thường" trong Erlang. Tôi muốn nói năng suất 10 lần sẽ là một cách đánh giá thấp so với các ngôn ngữ khác. Viết mã FPU? Năng suất 0,1x sẽ hào phóng. Nó phụ thuộc vào vấn đề bạn đang giải quyết.

Rõ ràng là chúng tôi đang ném xung quanh các giá trị ngẫu nhiên như "năng suất" 5 lần và 10 lần nhưng nó nhiều sắc thái hơn thế. Có nhiều hơn LỘC có thể được đo là "năng suất": làm thế nào về số lượng lỗi và mức độ nghiêm trọng trên mỗi loc được viết, chi phí tái cấu trúc, hiệu suất, độ mạnh, hỗ trợ thư viện, thời gian thiết lập, v.v. và nhiều số liệu hơn.

Các số liệu có giá trị khác nhau tùy thuộc vào lập trình viên và vấn đề. Ví dụ, người quan tâm nếu ứng dụng web Crud của tôi bị rò rỉ bộ nhớ và gặp sự cố ngẫu nhiên, đó là không trạng thái! Không có một ngôn ngữ thực sự tuyệt vời nào vì mọi lập trình viên ưu tiên năng suất của riêng họ.

Tuy nhiên, thông thường, LỘC được sử dụng như một proxy kém cho giá trị "năng suất" đa chiều này.


> Tăng năng suất 5x-10x sẽ rất lớn nếu nó thực sự tồn tại

Khi viết phần mềm, bạn có thể nhập mã nhanh như thế nào là yếu tố hạn chế tốc độ phát triển - kiến ​​trúc và xem xét tương tác giữa các thành phần sẽ mất phần lớn thời gian. Ông bà tuyên bố giảm mã [có lợi ích duy trì nội tại] nhưng không đưa ra tuyên bố về chi phí kỹ thuật chung.


> Việc kiến ​​trúc và xem xét tương tác giữa các thành phần chiếm phần lớn thời gian.

Được cho là những gì được đơn giản hóa khi LỘC đi xuống.

Vì vậy, nếu việc giảm mã 5x-10x được cho là [mà tôi chưa bao giờ thấy bằng chứng thực tế] không dẫn đến tăng năng suất 5x-10x, thì có bao nhiêu sự gia tăng? Chắc chắn hơn 0?


> Được cho là những gì được đơn giản hóa khi loc đi xuống.

Tôi không nghĩ vậy. Nếu bạn có thể thể hiện các khái niệm tương tự với cùng một giao diện và chức năng trong 1kloc vs 10kloc, hầu hết thời gian của bạn có lẽ vẫn đã tìm ra các giao diện và kết nối.

> Vậy nếu giảm mã 5x-10x được cho là [mà tôi chưa bao giờ thấy bằng chứng thực tế] không dẫn đến tăng năng suất 5x-10x, có mức tăng nào? Chắc chắn hơn 0?

Ồ, chắc chắn hơn không! Đôi khi nhiều hơn nữa. Nhưng đơn giản là không có công thức một kích cỡ phù hợp cho mối quan hệ giữa các dòng mã và năng suất được viết.

Dù sao, không thực sự chắc chắn những gì bạn đang nhận được. Nhận xét ban đầu của bạn là 10kloc không "lớn"; Rebuttal là các dòng mã là một cách ngây thơ để xem xét sự phức tạp của hệ thống, có lẽ là những gì bạn có nghĩa là "lớn".


Tôi không tin đó là những gì đã được nói. Nhưng trong mọi trường hợp, câu trả lời nói chung là không, tùy thuộc vào định nghĩa của bạn về "đọc".


20% là một thanh đủ thấp mà bạn có thể trích dẫn một ví dụ nổi tiếng: Mục tiêu C so với Swift loại bỏ toàn bộ các phần như tiêu đề và thêm các đánh số rất cần thiết. Kết quả nội bộ của chúng tôi là ít mã hơn và ít lỗi hơn trên mỗi dòng mã. Tuy nhiên, một số lượng lớn người chưa chuyển đổi. Tôi cũng không đổ lỗi cho họ; Quá trình chuyển đổi [cơ sở mã phân chia] là đau đớn và Apple làm cho mọi thứ tồi tệ hơn với việc gây ra ngôn ngữ.

Đối với trường hợp 5x-10x của bạn, điều đúng là mức tăng thực sự có thể, nhưng nó cũng có khả năng đến từ các thư viện so với các cấu trúc ngôn ngữ. Do đó, nó thường là 5x-10x trong một khu vực hạn chế.


Trong Elixir, bạn không bao giờ phải viết một lần lặp, không cần phải nhảy điệu nhảy "for-loop-with-Meet".

Kết hợp mẫu giúp dễ dàng liên kết các biến và xác thực các giá trị của chúng trong một dòng [vì vậy không có nhu cầu cho câu lệnh IF].

Trong Elixir, bạn thường không bắt được các ngoại lệ, bạn để nó bị sập. Vì vậy, tất cả các mã để xử lý các lỗi/lỗi không tồn tại, nó được xử lý bởi OTP.

Không cần phải viết bất kỳ lớp giao tiếp nào vì OTP tích hợp thực hiện tính minh bạch của vị trí.

Đây là những loại trái cây treo thấp trên đầu tôi. Tôi sẽ chỉ ra rằng ít dòng mã hơn không tự động dịch thành tăng năng suất. Ngoài ra, việc chuyển sang một ngăn xếp hoàn toàn mới không phải lúc nào cũng hợp lý/có thể ngay cả với lời hứa tăng năng suất đáng kể, nó thực sự không đơn giản.


Nó giống như có rất nhiều thứ bạn nhận được miễn phí với OTP/chùm mà bạn không thể nhận được hoặc sẽ mất nhiều nỗ lực trong các môi trường khác. Vì vậy, trong những trường hợp đó, nó có thể dễ dàng thậm chí từ 20 đến 1 trở lên, chúng cũng xa tầm thường. Từ tải lại mã nóng đến mã gọi trên bất kỳ nút cụm nào để xử lý giám sát và bật và bật


Đã kiểm tra ngoại lệ

Thiếu thành phần chức năng

Các loại bắt buộc [đối với mọi đối tượng tham số tầm thường hoặc "Lambda"]

Đối tượng quá mức-bất cứ điều gì lập bản đồ

Đối phó với trạng thái đột biến với số lượng lớn dữ liệu toàn cầu hiệu quả.

Phân vùng quá mức do tác động kích thước của những khó khăn trên

Sau đó, chúng ta có thể bắt đầu nói về độ dài của các dòng ...


FYI: Những lời chỉ trích nhằm vào một ngôn ngữ / thư viện / văn hóa "doanh nghiệp" nhất định, điều này khá bắt buộc bên ngoài Vùng Vịnh.


Lưu ý rằng việc giảm LỘC không bao hàm sự gia tăng năng suất tương ứng. Mã Scala của chúng tôi dễ dàng nhỏ hơn biểu diễn Java tương đương của nó, nhưng:

1. Suy nghĩ về vấn đề và mô hình nó đúng cách vẫn còn khó khăn và ngôn ngữ độc lập

2. Ngôn ngữ vẫn có những điều kỳ quặc/thất bại riêng mà bạn phải làm việc xung quanh

PS. Nhận xét của tôi không liên quan gì đến Scala mỗi se - tôi đang sử dụng nó làm ví dụ.


Ngay cả khi bạn nhân nó với 3, đó là một cơ sở mã nhỏ. Và Phoenix không tạo ra mã từ những gì tôi đã thấy.


10.000 dòng thực sự là rất nhiều cho Elixir. Cú pháp và thư viện tiêu chuẩn tích hợp của nó làm cho mã rất nhỏ gọn.


hai điều:

1] Elixir tương đối trẻ nên không có nhiều dự án có cơ hội phát triển trở nên to lớn. Vì vậy, yea, hãy lấy mọi thứ bạn đọc về nó với hạt muối đó. Mọi người chưa trở nên ghét nó ... có lẽ mọi người sẽ luôn yêu thích nó, nhưng tôi sẽ không đặt cược vào nó.

2] Khi được sử dụng trong một số bối cảnh nhất định, các ứng dụng Elixir cuối cùng có thể nhỏ hơn một chút so với Java/Scala/Python/bất kỳ ứng dụng nào có thể so sánh được. Rất nhiều những gì chúng tôi cuối cùng viết với microservice chỉ là RPC cơ bản và công cụ nồi hơi dung sai lỗi, mà OTP chăm sóc ngoài hộp. Ví dụ, Pinterest viết lại một ứng dụng Java 10kloc trong 1kloc của Elixir, chạy nó trên ít máy chủ hơn: //engineering.pinterest.com/blog/introducing-new-open -...


Pro-tip: Không bao giờ nhìn vào số lượng LOC để đo kích thước hoặc độ phức tạp của dự án, trừ khi bạn đang so sánh hai hệ thống được viết bằng cùng một ngôn ngữ. Ngay cả sau đó, so sánh có thể là khó khăn do các yếu tố như thư viện được sử dụng.


Đây là lý do tại sao tôi cảnh giác với các bài viết về Elixir. Tôi yêu ngôn ngữ rất nhiều nhưng các bài viết và bài viết trên blog về nó chủ yếu là sự cường điệu của những người không có nhiều kinh nghiệm.


Tôi muốn nói 10k LỘC là nơi thiết kế và kiến ​​trúc bắt đầu trở nên quan trọng, bạn không thể hack đi mà không phá vỡ công cụ.

Cá nhân tôi nghĩ rằng Copy & Paste là một người chống đối [thay vào đó, sử dụng các tính năng như thuốc generic], nhưng nhiều người nghĩ rằng đó là một ơn trời. Sử dụng tái sử dụng mã thay vì sao chép mã có thể tạo ra sự khác biệt lớn về kích thước và khả năng bảo trì, ít hơn chắc chắn là nhiều hơn!


Đối phó với điều đó tại nơi làm việc bây giờ. Dev được thêm vào dự án sẽ không sử dụng cấu trúc hiện có, chỉ cần tái tạo và dán các thứ trên nhiều lần :-[

Một phần trong đó là một vấn đề chính trị, tất nhiên, nhưng không phải là vấn đề trước đó.


Tôi đã dành phần tốt nhất của buổi chiều hôm qua để viết một truy vấn SQL phức tạp. Thay vào đó, tôi có thể viết một vài truy vấn đơn giản và vẫn ở đây viết, gỡ lỗi và kiểm tra mã để hợp nhất kết quả của họ. Tôi có một LỘC duy nhất này bây giờ thay vì 100+. Dòng đó có giá trị 100.


Tôi thường xuyên xóa hoặc thay thế hàng ngàn dòng mã mà không thay đổi chức năng của ứng dụng, được đưa vào bởi các lập trình viên như bạn, những người bị ám ảnh bởi số lượng LỘC mà họ tạo ra. Tôi không chắc tại sao bất cứ ai nghĩ rằng một giải pháp dài là tuyệt vời hoặc chúng ta nên đánh giá các lập trình viên bằng LỘC mà họ sản xuất. Tôi tin tưởng mạnh mẽ rằng lập trình viên càng tốt, giải pháp sẽ được sản xuất bởi cô ấy/anh ấy càng ngắn.


Chạy bộ phát hiện sao chép mã trong mã của bạn. Tôi tò mò muốn xem liệu bạn có thực sự cần 250.000 Sloc hay không, hoặc nếu nó thực sự chỉ sao chép và dán xung quanh.

Một tệp Python nên có bao nhiêu dòng mã?

Hầu hết chúng ta không viết mã lắp ráp. Nhưng gốc của mã của chúng tôi là lắp ráp. Tìm kiếm qua 10000 dòng lắp ráp khó hơn 10000 dòng Python, nếu nó được thực hiện chính xác. Nhưng một số công việc yêu cầu viết 500 đến 1000 dòng. Mục tiêu của chúng tôi với mã nên là viết 300 dòng mã sạch.300 lines of clean code.

Một chương trình Python có thể lớn như thế nào?

Không có tối đa có thể truy cập được về kích thước của một tệp python có thể mở.Mọi người thường xuyên tải gigabyte dữ liệu vào bộ nhớ.Tùy thuộc vào RAM của máy tính của bạn và liệu đó là hệ điều hành/bộ xử lý 64 hoặc 32-bit, mức tối đa thực tế cho bạn có thể ở bất cứ đâu từ 1 GB trước khi bạn có được bộ nhớ.. People regularly load gigabytes of data into memory. Depending on your computer's RAM and whether it's 64- or 32- bit OS/processor, the practical maximum for you may be anywhere from 1 GB up before you get a MemoryError.

Có bao nhiêu dòng mã mỗi ngày là tốt?

Như chúng ta có thể thấy, một nhà phát triển mới có thể sẽ viết khoảng 100 dòng mã mỗi ngày hoặc khoảng 25.000 dòng mã trong một năm làm việc nhất định.Ngược lại, một kỹ sư cao cấp hơn có lẽ đang viết khoảng 20 dòng mã mỗi ngày, hoặc khoảng 5.000 dòng mã trong một năm làm việc nhất định.100 lines of code a day, or about 25,000 lines of code in a given working year. In contrast, a more senior engineer is probably writing about 20 lines of code a day, or about 5,000 lines of code in a given working year.

Có một dòng mã tối đa?

Không có giới hạn về "dòng mã", nhưng có giới hạn về tổng kích thước., but there is a limit on total size.

Bài Viết Liên Quan

Chủ Đề