คำถามติดแท็ก readability

ความสามารถในการอ่านเป็นการวัดว่าโค้ดง่าย ๆ ในการอ่านและทำความเข้าใจ

5
วิธีแก้ปัญหาที่ใช้งานได้จริงสำหรับปัญหานี้จะสะอาดเหมือนความจำเป็นหรือไม่?
ฉันมีแบบฝึกหัดใน Python ดังนี้: พหุนามได้รับเป็น tuple ของค่าสัมประสิทธิ์ดังกล่าวว่าอำนาจจะถูกกำหนดโดยดัชนีเช่น: (9,7,5) หมายถึง 9 + 7 * x + 5 * x ^ 2 เขียนฟังก์ชันเพื่อคำนวณค่าสำหรับ x ที่กำหนด ตั้งแต่ฉันเข้าสู่การเขียนโปรแกรมการทำงานเมื่อเร็ว ๆ นี้ฉันเขียน def evaluate1(poly, x): coeff = 0 power = 1 return reduce(lambda accu,pair : accu + pair[coeff] * x**pair[power], map(lambda x,y:(x,y), poly, range(len(poly))), 0) ซึ่งฉันคิดว่าอ่านไม่ได้ดังนั้นฉันจึงเขียน def …

3
การใช้การแปลงอาร์กิวเมนต์โดยนัยถือว่าเป็นอันตรายหรือไม่
C ++ มีคุณสมบัติ (ฉันไม่สามารถหาชื่อที่ถูกต้องได้) ซึ่งเรียกการสร้างพารามิเตอร์ที่ตรงกันโดยอัตโนมัติหากประเภทอาร์กิวเมนต์ไม่ใช่ประเภทที่คาดไว้ ตัวอย่างพื้นฐานของสิ่งนี้คือการเรียกใช้ฟังก์ชันที่คาดว่าจะstd::stringมีconst char*อาร์กิวเมนต์ คอมไพเลอร์จะสร้างรหัสโดยอัตโนมัติเพื่อเรียกใช้std::stringConstructor ที่เหมาะสม ฉันสงสัยว่ามันดีสำหรับการอ่านอย่างที่คิดหรือไม่? นี่คือตัวอย่าง: class Texture { public: Texture(const std::string& imageFile); }; class Renderer { public: void Draw(const Texture& texture); }; Renderer renderer; std::string path = "foo.png"; renderer.Draw(path); ไม่เป็นไรใช่ไหม หรือมันไปไกลเกินไป? ถ้าฉันไม่ควรทำฉันจะทำให้ Clang หรือ GCC เตือนได้ไหม?

5
เป็นไปได้ไหมที่จะใช้รหัสขนาดยาวที่แสดงการคำนวณได้ง่ายขึ้น?
วิธีการแบบยาวโดยทั่วไปถือว่าไม่ดี แต่ในรหัสของฉันฉันมีวิธีการแบบยาวที่เข้าใจยาก (มากกว่า 50 บรรทัด) ฉันมีปัญหาในการทำให้วิธีการเหล่านั้นอ่านง่ายขึ้นเพราะคำสั่งเดียวที่มีอยู่แล้วมีความยาวมากกว่า 50 บรรทัดและคำสั่งเดียวที่อ่านยากคือการสร้างแบบสอบถามฐานข้อมูลโดยใช้ ORM เพื่อทำงานบางอย่างที่งานเสร็จแล้ว ระบุไว้อย่างชัดเจนในชื่อวิธีการ เหตุผลที่คำสั่งยาวมากเพราะรวมอยู่ในหลายคอลัมน์ใช้หลาย wheres และเลือกคอลัมน์ที่แตกต่างกันหลายรายการเพื่อสร้างรูปแบบเอาต์พุตเอกสารที่จำเป็น รหัสที่อ่านยากเช่นนี้ถือว่าเป็นรหัสที่ไม่ดีหรือไม่? ในทำนองเดียวกันถ้าฉันเขียนโค้ดสำหรับอัลกอริธึมที่ซับซ้อนส่งผลให้โค้ดที่อ่านยากถูกห่อด้วยวิธีการตั้งชื่ออย่างชัดเจนรหัสนั้นเป็นโค้ดที่ไม่ดีหรือไม่

3
'ใช้' เหมาะสมหรือไม่ในบริบทที่ไม่มีอะไรทิ้ง?
ใน C # usingคำสั่งจะถูกใช้เพื่อกำจัดทรัพยากรอย่างไม่ถูกต้องโดยไม่ต้องรอการเก็บขยะ ตัวอย่างเช่นอาจใช้เพื่อ: กำจัดคำสั่งหรือการเชื่อมต่อ SQL ปิดสตรีมปล่อยแหล่งข้อมูลอ้างอิงเช่นไฟล์ องค์ประกอบ GDI + ฟรี เป็นต้น ฉันสังเกตเห็นว่าusingมีการใช้งานมากขึ้นในกรณีที่ไม่มีสิ่งใดที่จะกำจัด แต่ที่มันสะดวกกว่าสำหรับผู้โทรที่จะเขียนusingบล็อกแทนที่จะเป็นสองคำสั่งแยกกัน ตัวอย่าง: MiniProfilerเขียนโดยทีม Stack Overflow ใช้usingเพื่อแสดงถึงบล็อกในโปรไฟล์: using (profiler.Step("Name goes here")) { this.DoSomethingUseful(i - 1); } ทางเลือกหนึ่งที่จะมีสองช่วงตึก: var p = profiler.Start("Name goes here"); this.DoSomethingUseful(i - 1); profiler.Stop(p); อีกวิธีหนึ่งคือการใช้การกระทำ: profiler.Step("Name goes here", () => this.DoSomethingUseful(i - 1)); ASP.NET …

2
S- นิพจน์อ่านได้
โดยสรุปและสำหรับผู้ที่ไม่ทราบว่าฟังก์ชั่นเสียงกระเพื่อม / ผู้ประกอบการ / การสร้างทั้งหมดเรียกว่าเหมือนกันนี้: (function arg0 arg1 ... argN) ดังนั้นในภาษา C เหมือนคุณจะแสดงออกเป็น if (a > b && foo(param)) ถูกแปลงเป็น Lisp sexp เช่น (if (and (> a b) (foo param))) . ในขณะที่สิ่งต่าง ๆ มีความซับซ้อนและซับซ้อนมากขึ้นจริง ๆ ฉันจึงใช้คำพูดที่สอดคล้องกันสำหรับฉัน ฉันรู้ว่านี่อาจเป็นคำถามส่วนตัว แต่ - สำหรับแฮ็กเกอร์ LISP หลายคนแล้วสิ่งนี้จะสร้างความรำคาญเล็กน้อยให้กับคุณเสมอ หรือคนส่วนใหญ่คุ้นเคยกับไวยากรณ์ (ขาด) ไม่ช้าก็เร็ว? ไม่ว่าในกรณีใดการเพิ่ม breaklines (ซึ่งคุณจะไม่เพิ่มในค่าเทียบเท่า C ของคุณส่วนใหญ่) …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.