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

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

3
รหัสแหล่งที่มาที่เปิดตัวภายใต้ GPL ต้องอ่านได้หรือไม่
ในการตอบคำถามอื่นผู้โพสต์แนะนำว่าภายใต้ GPL: ... คุณต้องจัดเตรียม [code] ที่มนุษย์สามารถอ่านได้ไม่ใช่รุ่นที่เว้นช่องว่าง ... การอ่านจะดูเหมือนว่าฉันจะเป็นอัตนัยและไม่น่าจะเป็นที่ต้องการอย่างชัดเจนโดย GPL ใช่ไหม?

7
ฉันจะจัดการชุดกฎและหมายเลขมายากลที่มีขนาดใหญ่มากในโปรแกรมของฉันได้อย่างไร
ฉันค่อนข้างใหม่ในการเขียนโปรแกรม (ฉันเป็นวิศวกรเครื่องกลโดยการค้า) และฉันกำลังพัฒนาโปรแกรมขนาดเล็กในช่วงเวลาหยุดทำงานของฉันที่สร้างชิ้นส่วน (solidworks) ตามการป้อนข้อมูลจากผู้คนต่าง ๆ จากโรงงาน จากอินพุตเพียงเล็กน้อย (6 ต่อแน่นอน) ฉันต้องทำการเรียก API หลายร้อยครั้งที่สามารถใช้พารามิเตอร์มากถึงสิบตัว ทั้งหมดสร้างขึ้นโดยชุดของกฎที่ฉันรวบรวมหลังจากสัมภาษณ์ทุกคนที่จัดการส่วนนั้น ส่วนกฎและพารามิเตอร์ของรหัสของฉันคือ 250 บรรทัดและเพิ่มขึ้น ดังนั้นวิธีที่ดีที่สุดในการรักษาและอ่านรหัสของฉันคืออะไร? ฉันจะแยกหมายเลขเวทย์มนตร์ทั้งหมดกฎทั้งหมดอัลกอริธึมและส่วนของขั้นตอนของรหัสได้อย่างไร ฉันจะจัดการกับ API ที่ละเอียดและละเอียดมากได้อย่างไร เป้าหมายหลักของฉันคือการสามารถมอบแหล่งข้อมูลให้ใครบางคนและให้พวกเขาเข้าใจในสิ่งที่ฉันทำ

8
คุณต้องการความกระชับหรืออ่านง่ายในโค้ดของคุณหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ทางลัดภาษามักใช้เพื่อทำให้รหัสกระชับยิ่งขึ้น ตัวอย่างเช่นตัวดำเนินการ ternary และ null รวมตัวกันสามารถลดจำนวนของโค้ดได้ ใน C #: Person newGuy = new Person(); if (boss == null) { newGuy.Boss = GetDefaultBoss(); } else { newGuy.Boss = boss; } มีหน้าที่เทียบเท่ากับ: Person newGuy = new Person(); newGuy.Boss = boss ?? GetDefaultBoss(); แต่เห็นได้ชัดว่า verbose มากขึ้น …

4
ทำไม JSX ถึงดีเมื่อสคริปต์ JSP ไม่ดี
React.js ให้ JSX เป็นไวยากรณ์ที่คล้ายกับ XHTML สำหรับสร้างโครงสร้างของส่วนประกอบและองค์ประกอบ JSX คอมไพล์กับ Javascript และแทนที่จะให้ลูปหรือเงื่อนไขใน JSX ที่เหมาะสมคุณใช้ Javascript โดยตรง: <ul> {list.map((item) => <li>{item}</li> )} </ul> สิ่งที่ฉันยังไม่สามารถอธิบายได้เป็นเพราะเหตุใดจึงถือว่าดีถ้าโครงสร้างแบบอะนาล็อกคล้ายคลึงกันถือว่าไม่ดีใน JSP บางอย่างเช่นนี้ใน JSP <ul> <% for (item in list) { %> <li>${item}</li> <% } %> </ul> <c:forEach>ถือเป็นปัญหาการอ่านจะได้รับการแก้ไขได้ด้วยแท็กเช่น เหตุผลที่อยู่เบื้องหลังแท็ก JSTL ก็ดูเหมือนว่าพวกเขาสามารถนำไปใช้กับ JSX: มันง่ายกว่าที่จะอ่านเมื่อคุณไม่สลับระหว่าง XHTML คล้ายไวยากรณ์ (วงเล็บมุม, การซ้อน) และ Java / …

6
วิธีลบฟังก์ชั่นหรือคุณสมบัติเมื่อใช้ TDD
ในข้อความเกี่ยวกับ TDD ฉันมักจะอ่านเกี่ยวกับ "ลบการทำซ้ำ" หรือ "ปรับปรุงการอ่าน" ในระหว่างขั้นตอนการสร้างใหม่ แต่อะไรทำให้ฉันลบฟังก์ชันที่ไม่ได้ใช้ออก สำหรับการพูดเช่นขอให้มีชั้นเรียนCด้วยวิธีการและa() b()ตอนนี้ผมคิดว่ามันจะดีที่จะมีวิธีการที่จะขับรถเข้าไปf() Cในความเป็นจริงf()แทนที่ทุกสายที่จะb()มีข้อยกเว้นของการทดสอบหน่วยที่กำหนดไว้ / b()อธิบาย ไม่จำเป็นอีกต่อไป - ยกเว้นการทดสอบ มันเป็นการประหยัดเพียงแค่ลบb()และการทดสอบทั้งหมดที่ใช้หรือไม่ เป็นส่วนหนึ่งของ "ปรับปรุงการอ่าน" หรือไม่?

1
ทำไม Bootstrap 3 เปลี่ยน camelCase เป็นเครื่องหมายขีดกลาง - สามารถอ่านได้มากกว่าหรือไม่
ฉันสงสัยว่าเหตุผลใดที่อยู่เบื้องหลังการตัดสินใจของ Bootstrap ในการเปลี่ยนชื่อเคสอูฐทั้งหมดเป็นชื่อยัติภังค์ใน v3.0 ฉันค้นหาใน Google และดูหนังสือสองสามเล่ม แต่ฉันสามารถค้นหาความคิดเห็นได้ทางเดียวหรืออย่างอื่น - ไม่มีข้อมูลที่ยาก มีการศึกษาใดบ้างที่แนะนำชื่อตัวแปรของกรณีอูฐอ่านได้ดีกว่าเครื่องหมายขีดคั่นหรือเป็นเรื่องของการตั้งค่าส่วนตัวหรือไม่?

5
การตั้งชื่อเชิงพรรณนาเทียบกับ 80 บรรทัดอักขระ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบ เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันมักจะได้ยินวิธีการเขียนโปรแกรมที่มีค่าทั้งสองนี้: (1) บรรทัดของรหัสควรเป็น 80 ตัวอักษรหรือน้อยกว่าและ (2) ใช้ชื่อที่สื่อความหมายสำหรับตัวแปรวิธีการชั้นเรียน ฯลฯ ฉันเข้าใจเหตุผลของคำแนะนำทั้งสองนี้ พวกเขาดูเหมือนจะแลกเปลี่ยนกันบ่อยครั้ง หากฉันเก็บรหัสของฉันไว้ต่ำกว่า 80 ตัวอักษร / บรรทัดฉันจะใช้ชื่อที่มีความหมายน้อยกว่า (โดยเฉพาะใน Python ที่แต่ละการเยื้องนับเป็น 4 ตัวอักษร) แต่ถ้าฉันใช้ชื่อที่มีความหมายมากขึ้น ดังนั้นคำถามของฉันคือคำแนะนำสองชิ้นนี้สำคัญกว่าที่จะต้องปฏิบัติตามหากต้องเลือกตัวเลือก ฉันสงสัยว่านี่เป็นโปรแกรมเมอร์อิสระ (มือสมัครเล่น) แต่ที่สำคัญกว่านั้นจากมุมมองของวิศวกรซอฟต์แวร์ที่ทำงานให้กับ บริษัท ขนาดใหญ่

4
วิธีการตรวจสอบว่าภาษาการเขียนโปรแกรมเป็น verbose หรือสั้น ๆ ?
การเขียนโปรแกรมภาษามักจะสามารถอธิบายเป็นverboseหรือสั้น จากความเข้าใจของฉันภาษา verbose นั้นง่ายต่อการอ่านและเข้าใจในขณะที่ภาษาสั้น ๆ นั้นกระชับและเรียบร้อย แต่อ่านยากขึ้น ควรมีสิ่งอื่นที่ต้องพิจารณาในคำจำกัดความหรือไม่ ดูเหมือนว่าภาษาการเขียนโปรแกรมที่ได้รับความนิยมส่วนใหญ่ในปัจจุบันมีความละเอียดมากและคำศัพท์สองคำนี้ใช้เพื่ออธิบายภาษาว่ามีมากกว่าหรือน้อยกว่าเมื่อเทียบกับภาษาอื่น เราจะตรวจสอบได้อย่างไรว่าภาษาการเขียนโปรแกรมนั้นมีความละเอียดมากกว่า / อีกคำหนึ่งมากกว่า? ตัวอย่าง: Cb มากกว่า verbose มากกว่า Java หรือไม่

4
วิธีการเดียวที่มีพารามิเตอร์จำนวนมากและวิธีการมากมายที่จะต้องเรียกตาม
ฉันมีข้อมูลดิบที่ฉันต้องทำหลายสิ่งเพื่อ (เลื่อนหมุนปรับขนาดตามแกนบางหมุนไปยังตำแหน่งสุดท้าย) และฉันไม่แน่ใจว่าวิธีที่ดีที่สุดในการอ่านโค้ด ในอีกด้านหนึ่งฉันสามารถทำวิธีเดียวที่มีพารามิเตอร์จำนวนมาก (10+) เพื่อทำสิ่งที่ฉันต้องการ แต่นี่เป็นโค้ดที่อ่านฝันร้าย ในทางตรงกันข้ามฉันสามารถสร้างหลายวิธีด้วยพารามิเตอร์ 1-3 ตัว แต่วิธีเหล่านี้จะต้องเรียกตามลำดับที่เฉพาะเจาะจงมากเพื่อให้ได้ผลลัพธ์ที่ถูกต้อง ฉันได้อ่านว่าวิธีที่ดีที่สุดในการทำสิ่งหนึ่งและทำได้ดี แต่ดูเหมือนว่ามีวิธีการมากมายที่ต้องถูกเรียกใช้เพื่อเปิดรหัสสำหรับข้อบกพร่องที่หายาก มีกระบวนทัศน์การเขียนโปรแกรมที่ฉันสามารถใช้ที่จะลดข้อบกพร่องและทำให้รหัสอ่านง่ายขึ้นหรือไม่
16 java  readability 

7
เราสามารถทำอะไรเพื่อปรับปรุงความสามารถในการอ่านของโค้ดเชิงคณิตศาสตร์ใน C #, Java และสิ่งที่คล้ายกัน? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ในฐานะที่เป็นทั้งโปรแกรมเมอร์ C และโปรแกรมเมอร์ C # สิ่งหนึ่งที่ฉันไม่ชอบเกี่ยวกับ C # ก็คือฟังก์ชั่นคณิตศาสตร์ verbose เป็นอย่างไร ทุกครั้งที่คุณต้องใช้ฟังก์ชัน Sin, cosine หรือ power คุณจะต้องเพิ่มคลาสสถิตแบบคณิตศาสตร์ล่วงหน้า สิ่งนี้นำไปสู่โค้ดที่ยาวมากเมื่อสมการนั้นง่ายมาก ปัญหาจะยิ่งแย่ลงหากคุณต้องการพิมพ์ข้อมูลชนิด ดังนั้นในความคิดของฉันการอ่านได้รับความเดือดร้อน ตัวอย่างเช่น: double x = -Math.Cos(X) * Math.Sin(Z) + Math.Sin(X) * Math.Sin(Y) * Math.Cos(Z); ตรงข้ามกับเพียงแค่ double x = -cos(X) * sin(Z) + sin(X) * …
16 java  c#  math  readability 

4
การศึกษาว่าโปรแกรมเมอร์สามารถเข้าใจโค้ดในภาษาที่ไม่คุ้นเคยได้ดีเพียงใด [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา มีการศึกษาอย่างจริงจังหรือไม่ว่าโปรแกรมเมอร์ที่มีประสบการณ์และรู้ภาษา X สามารถเข้าใจโค้ดที่เขียนโดยโปรแกรมเมอร์ที่มีความสามารถโดยใช้ภาษา Y สำหรับภาษาที่มีการใช้กันอย่างแพร่หลายเช่น X และ Y หรือไม่? แน่นอนว่าโลกแห่งความเป็นจริงไม่ใช่เรื่องง่ายนักเนื่องจากโปรแกรมเมอร์รู้เพียงภาษาเดียว สิ่งที่เราอยากรู้คือ: ถ้าเราทำโครงการของเราพูด C # และสักวันหนึ่งนักฟิสิกส์บางคนที่รู้เพียงฟอร์แทรนและอัลกอลมองไปที่มันจะเหมาะสมกับพวกเขามากแค่ไหน? ส่วนทางคณิตศาสตร์ของมันอาจอ่านได้ดีสำหรับพวกเขาหากพวกเขาไม่สนใจสิ่งที่พวกเขาเป็นเครื่องหมายวรรคตอนแบบสุ่ม - ish หรือผู้เชี่ยวชาญ Python จะสามารถหาข้อบกพร่องในสคริปต์ Ruby ที่ฉลาดของฉันได้หรือไม่ อาจมีปัญหาจากระดับของซินแท็กซ์ผิวเผินไปจนถึงระดับของแนวคิดที่ยิ่งใหญ่เช่นวัตถุเทมเพลต metaprogramming การใช้งานและอื่น ๆ ฉันไม่ได้คาดหวังว่าผู้เขียนโปรแกรมคนหนึ่งจะเข้าใจทุกรายละเอียดทางไวยากรณ์ของรหัสใน "ภาษาต่างประเทศ" หรือตามศาสนาของแนวความคิดที่ยิ่งใหญ่ แต่สงสัยว่าพวกเขาจะได้รับการควบคุมหลักได้อย่างไร เมื่อสิ่งที่วาดบนหน้าจอและสิ่งที่กำหนดสีหรือขนาดของมันให้ตรวจสอบว่าหุ่นยนต์ที่ตั้งโปรแกรมให้ขับรถจะปิดเครื่องยนต์เมื่อทำเสร็จแล้วสิ่งต่างๆเหล่านั้น การศึกษาที่มีคุณภาพดีจะรวมถึงการวิจัยเชิงวิชาการที่ตีพิมพ์รายงานอย่างเป็นทางการจากกลุ่มอุตสาหกรรมหรือ บริษัท ซอฟต์แวร์รายใหญ่แม้ว่าฉันจะทำการสังเกตอย่างเป็นระบบโดยผู้นำที่มีประสบการณ์ในการประชุมเชิงปฏิบัติการและชั้นเรียนหรือแหล่งอื่น ๆ ไม่สนใจบล็อกสั้น ๆ ตัวอย่างกรณีเดียวหรือเกร็ดเล็กเกร็ดน้อย …

6
ศูนย์เป็นค่าคงที่หรือไม่?
ฉันได้เจอสำนวนการเขียนโปรแกรมนี้เมื่อเร็ว ๆ นี้: const float Zero = 0.0; ซึ่งจะใช้ในการเปรียบเทียบ: if (x > Zero) {..} ใครสามารถอธิบายได้ว่าสิ่งนี้มีประสิทธิภาพมากขึ้นหรือสามารถอ่านหรือบำรุงรักษาได้ดีกว่า: if (x > 0.0) {..} หมายเหตุ: ฉันสามารถคิดอื่น ๆเหตุผลที่จะกำหนดนี้คงอิ่มเพียงแค่สงสัยเกี่ยวกับการใช้งานในนี้บริบท

6
C # อ่านยากขึ้นไหม
เมื่อ C # ได้รับการพัฒนาคุณสมบัติด้านภาษาจำนวนมากได้ถูกเพิ่ม มันมาถึงจุดที่มันกลายเป็นอ่านไม่ได้สำหรับฉัน ยกตัวอย่างเช่นพิจารณารหัสต่อไปนี้จากรหัส Caliburn.Micro ที่นี่ : container = CompositionHost.Initialize( new AggregateCatalog( AssemblySource.Instance. Select(x => new AssemblyCatalog(x)) .OfType<ComposablePartCatalog>() ) ); ตอนนี้เป็นเพียงตัวอย่างเล็ก ๆ ฉันมีคำถามจำนวนหนึ่ง: นี่เป็นปัญหาทั่วไปหรือเป็นที่รู้จักหรือไม่? ชุมชน C # ค้นหาเหมือนกันหรือไม่ นี่เป็นปัญหาเกี่ยวกับภาษาหรือเป็นสไตล์ที่นักพัฒนาใช้หรือไม่ มีวิธีง่ายๆในการเข้าใจโค้ดอื่น ๆ และหลีกเลี่ยงการเขียนโค้ดด้วยวิธีนี้หรือไม่?
15 c#  readability 

4
ลองใช้ catch-blocks กันดีไหม?
ฉันมักจะพบว่าตัวเองต่อสู้กับเรื่องนี้ ... พยายามหาสมดุลระหว่างลอง / จับและรหัสไม่เป็นระเบียบลามกของแท็บวงเล็บและข้อยกเว้นถูกโยนกลับกองโทรเช่นมันฝรั่งร้อน ตัวอย่างเช่นฉันมีแอพที่ฉันกำลังพัฒนาอยู่ตอนนี้ซึ่งใช้ SQLite ฉันมีอินเทอร์เฟซฐานข้อมูลที่เป็นนามธรรมการเรียกใช้ SQLite และแบบจำลองที่ยอมรับสิ่งต่าง ๆ ที่จะเข้า / ออกจากฐานข้อมูล ... ดังนั้นหาก / เมื่อเกิดข้อยกเว้น SQLite ขึ้นมามันจะต้องถูกโยนขึ้นสู่รุ่น (ซึ่งเรียกว่า ) ใครจะต้องส่งมันให้ใครก็ตามที่เรียกว่า AddRecord / DeleteRecord / อะไรก็ตาม ... ฉันเป็นแฟนตัวยงของข้อยกเว้นซึ่งตรงกันข้ามกับการส่งคืนรหัสข้อผิดพลาดเนื่องจากรหัสข้อผิดพลาดสามารถถูกละเว้นลืม ฯลฯ ได้ในขณะที่การจัดการข้อยกเว้นเป็นหลัก (ได้รับฉันสามารถจับและย้ายได้ทันที ... ) ฉัน บางอย่างจะต้องมีวิธีที่ดีกว่าสิ่งที่ฉันเกิดขึ้นตอนนี้ แก้ไข: ฉันควรจะใช้ถ้อยคำนี้แตกต่างกันเล็กน้อย ฉันเข้าใจที่จะโยนเป็นประเภทที่แตกต่างกันและเช่นนั้นฉันพูดได้ไม่ดีและนั่นเป็นความผิดของฉันเอง คำถามของฉันคือ ... จะรักษาความสะอาดโค้ดเมื่อทำเช่นนั้นได้อย่างไร มันเริ่มรู้สึกเกะกะอย่างมากกับฉันหลังจากนั้นไม่นาน

6
ทำไมหลายภาษาไม่สนับสนุนพารามิเตอร์ที่มีชื่อ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันแค่คิดว่าจะอ่านรหัสได้ง่ายขึ้นแค่ไหนเมื่อเรียกฟังก์ชั่นคุณสามารถเขียน: doFunction(param1=something, param2=somethingElse); ฉันไม่สามารถนึกถึงข้อเสียใด ๆ และมันจะทำให้อ่านง่ายขึ้น ฉันรู้ว่าคุณสามารถส่งผ่านอาร์เรย์เป็นอาร์กิวเมนต์เท่านั้นและมีคีย์อาร์เรย์เป็นชื่อพารามิเตอร์อย่างไรก็ตามที่จะยังคงไม่สามารถอ่านได้ มีข้อเสียที่ฉันหายไปนี้หรือไม่? ถ้าไม่ทำไมหลายภาษาไม่อนุญาตสิ่งนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.