Chương trình Spartan có gì hay? [đóng cửa]


8

Chúng tôi đang bị buộc phải sử dụng lập trình Spartan cho một dự án, làm mọi người mất tinh thần. Vì vậy, tôi nhận được nó, nó làm cho các phương thức thực sự ngắn và nó xử lý các trường hợp đơn giản đầu tiên. Nhưng nó có thực sự xứng đáng với giá của mã trông giống như một thứ gì đó trong cuộc thi Obfuscated C Code không?

Bạn có thể thấy nó hữu ích cho một cái gì đó?


3
"Lập trình Spartan" là cái quái gì vậy? Bạn có thể cung cấp một liên kết cho chúng tôi không biết gì về dân gian?
DarenW

Bạn đang "buộc phải sử dụng lập trình Spartan cho một dự án"?! Làm thế nào mà làm việc? Ý tôi là, tôi có thể (đến một điểm) tưởng tượng việc bị buộc phải sử dụng (một biên tập viên / VSC / ...) cho một dự án, nhưng làm thế nào người ta có thể bị buộc phải sử dụng một cách tiếp cận nhất định?
Rook

16
Đây là Sparta!
Dean Harding

2
Nếu bạn kết thúc với mã nên được tham gia vào một cuộc thi bị xáo trộn, mặc dù có bất kỳ uyển ngữ nào, bạn đã làm sai.
Tim Post

3
@EpsilonVector: Ah, vậy đây là một dự án trường học, không phải là một cái gì đó trong "thế giới thực"? Sau đó tôi sẽ chỉ mút nó và làm việc. Có lẽ giáo sư đang cố gắng dạy bạn rằng việc tuân thủ mù quáng các quy tắc giáo điều thường gây bất lợi cho khả năng làm việc hiệu quả của bạn. Hoặc có lẽ anh ta chỉ tàn bạo ... Tôi biết nhiều giáo sư là ;-)
Dean Harding

Câu trả lời:


24

Nhiều người thuê lập trình Spartan có vẻ như là một thực hành tốt đối với tôi. Ví dụ, giữ các phương thức ngắn, tối thiểu hóa phạm vi của các biến, tối thiểu hóa số lượng tham số cho một phương thức hoặc các phương thức cho một lớp, v.v ... Đây đều là những điều tốt và chính xác là những gì bạn nên phấn đấu.

Nhưng sau đó, có những thứ như giảm thiểu số lượng ký tự , giảm thiểu số lượng mã thông báo , phân tích (nghiêm túc?), V.v ... thực sự vô nghĩa.

Tôi nghĩ vấn đề chính của tôi với nó được minh họa bằng trích dẫn này :

Nhưng, lập trình Spartan không chỉ là một phong cách mã hóa kỹ thuật, trong đó có một nguyên tắc thống nhất, cơ bản duy nhất --- sự tối giản và đơn giản được đưa đến cực đoan.

Bất cứ điều gì "đưa đến cực đoan" rung chuông báo động cho tôi.


Có ai nói "lập trình" không? : p
CesarGon

ternarization rất thú vị, trong trường hợp đầu tiên được trích dẫn trong bài báo được liên kết, đó là một ý tưởng tốt, trong lần thứ hai ... hmmm ok, tôi sẽ bỏ qua điều đó, nhưng để đưa ternarization đến các thái cực ngớ ngẩn (ví dụ như chim nhạn lồng nhau) , ngớ ngẩn.
ocodo

@Slomojo: WTF thực sự trên trang đó là các phần trên "Tự động hóa ternarization" ...
Dean Harding

regex đó là khá tuyệt vời, miễn là bạn xem lại mỗi lần phát hiện, tôi không thấy vấn đề gì lớn với nó. Miễn là chúng vẫn có thể đọc được thì chúng vẫn ổn. - Như bạn nói, đó là cực đoan (hoặc có lẽ chính xác hơn, cực đoan) sẽ là vấn đề.
ocodo

+1 cho bất cứ điều gì "đưa đến cực đoan" rung chuông báo động cho tôi.
Sarawut Positwinyu

4

Bây giờ trông có vẻ quen quen. Ngay cả việc giảm thiểu trên các mã thông báo, mặc dù không được đưa đến thái cực. Tôi thà sử dụng fname hơn tên tệp chẳng hạn, ra cho đầu ra, x cho đầu vào dữ liệu, n cho số đếm, l cho độ dài, v.v. lx sẽ là chiều dài của x, ly chiều dài của y, ... bạn có được độ trôi.

Thêm vào đó, vì tôi thường thao túng các bộ dữ liệu lớn trong các ứng dụng khoa học, tôi sử dụng các phương tiện chỉ mục trong R rất nhiều. Khi tôi viết ra tất cả các chỉ số đó, mã làm tôi đau mắt. Vì vậy, chỉ số trở thành id, hoặc thậm chí chỉ là i.

Thậm chí, các cấu trúc vòng lặp cụ thể trong R (họ ứng dụng) thường yêu cầu khai báo hàm trong lệnh gọi áp dụng. Trong những trường hợp đó, tôi luôn sử dụng x, y, z, ... Các chức năng này thường là một hoặc hai dòng, vì vậy nó rõ ràng đến từ đâu và nó không làm lộn xộn màn hình.

Đó không phải là một điều xấu, miễn là bạn có một số quy ước đặt tên được kết hợp thông qua mã hoàn chỉnh và bạn cung cấp các nhận xét để giải thích các tên biến khó hiểu hơn. Cuối cùng, nó làm cho mã dễ đọc với tôi hơn là một đoàn lạc đà dài lảng vảng trên màn hình.


2
Tôi đồng ý rằng các biến ngắn hơn thường dễ đọc hơn các tên biến cực dài. Như tôi đã nói trong câu trả lời của mình, 'Bất cứ điều gì "được đưa đến cực đoan" đều gióng lên hồi chuông cảnh báo cho tôi' và điều đó đi cả hai chiều. Mục tiêu cuối cùng của bạn là tối đa hóa khả năng đọc, bất kể số lượng nhân vật cụ thể.
Dean Harding

1
Bạn nói ".. nó làm cho mã dễ đọc hơn đối với tôi ..."; Tôi nhấn mạnh vào "với tôi". Khi mã của bạn được sử dụng và duy trì bởi hàng tá người khác, thì các biến và logic của bạn phải có ý nghĩa với họ cũng như bạn . Trong những trường hợp đó, quy ước và chữ viết tắt của bạn có thể không quá rõ ràng. :-)
CesarGon

@Cesargon: Đó là vấn đề ghi lại các quy ước.
Joris Meys

@Dean Tôi hoàn toàn đồng ý về điều đó. Tuy nhiên, tôi nhận thấy một xu hướng cực đoan khác, đáng chú ý trong một số ngôn ngữ lập trình cụ thể. Jave đến với tâm trí ...
Joris Meys

2

Đây là một bài viết thảo luận về lợi ích của lập trình Spartan

http://ssdl-wiki.cs.technion.ac.il/wiki/index.php/SendAnEmail_case_study


3
Đó là một trò đùa, phải không? Giảm thiểu độ dài tên biến, giảm thiểu số lượng biến ... trời ạ, nhắc nhở tôi về những ngày MSX của tôi!
CesarGon

Tôi không tán thành nó :) nhưng bài báo giải thích nó tốt hơn thì tôi có thể.
Demian Kasier

Tôi biết rồi mà.
CesarGon

1
Không phải những điều thể hiện trong bài viết này thuộc về mọi hành động tái cấu trúc sao? Tôi không biết rằng cái này được gọi là "Lập trình Spartan", nhưng nói chung tôi cố gắng quan tâm đến những điều này trong khi tôi viết mã (ngoài độ dài tên biến, nhưng dù sao tôi vẫn không thấy vấn đề đó trong bài viết)
Felix Dombek

Vâng tôi quen thuộc với liên kết đó, ngoại trừ việc nó đã từng không tải khi chúng tôi cố gắng truy cập nó một lúc trước ... OK vì vậy nó ít điên rồ hơn các thành viên trong nhóm của tôi phát ra âm thanh, nhưng tôi vẫn ở bên CaesarGon trên cái này ...
EpsilonVector

2

Đây là một điểm nhấn nhỏ gọn của Cs.

  1. Đúng
  2. Hoàn thành
  3. Nhỏ gọn

Không ai quan tâm đến mã của bạn nếu nó không đúng.

Nếu mã của bạn không hoàn thành (xử lý mọi trường hợp), thì sẽ lỗi.

Nếu nó không nhỏ gọn hơn bạn đang lãng phí bộ nhớ hoặc chu kỳ đồng hồ (tối ưu hóa trình biên dịch sang một bên)

Lưu ý thứ tự ở đây là tối quan trọng. Chương trình nhỏ gọn nhất hiếm khi chính xác. VÍ DỤ

void main() {
 return 1; 
}

Bạn có thể làm cho nó thậm chí còn nhỏ gọn hơn nếu bạn muốn. void main(){return 1;}
Aaron Franke

0

Ồ, tôi thực sự lập trình như thế này, không biết nó có tên. Tôi có thể nói rằng nó mang lại lợi ích cho khả năng đọc nhưng nhiều hơn theo cách không gian ... có nghĩa là bạn không bị lạc trong một súp mã ngay cả khi bạn có một vài dòng khó đọc.

Tuy nhiên, tôi muốn nói rằng khi bạn quen với một số cấu trúc nhất định, bạn sẽ thấy cách của mình dễ dàng hơn trong thời gian ngắn hơn so với lúc bắt đầu.


1
Có một phiên bản mới của dự án spartznizer, tại đây: github.com/SpartanRefactoring/Spartanizer/wiki/Tutorial
Yossi Gil
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.