คำถามติดแท็ก coding-style

รูปแบบการเข้ารหัสเป็นชุดแนวทางที่ช่วยให้สามารถอ่านและเข้าใจซอร์สโค้ดได้

1
ทำไม CSS ไม่สนับสนุนตัวแปรและลำดับชั้นโดยกำเนิด
ฉันยังใหม่กับการพัฒนา UI แต่ฉันรู้สึกไม่สบายใจกับวิธีการทำงานของ CSS กรณีการใช้งานของฉันคือฉันต้องการใช้สไตล์เฉพาะบางอย่างdivในหน้าใดหน้าหนึ่ง ความพยายาม CSS: div.class1 { font: normal 12px arial, helvetica, sans-serif; font-color: #f30; } div.class1 div.class2 { border: 1px solid #f30; } ความพยายามน้อยกว่า: @red: #f30; @font-family: arial, helvetica, sans-serif; div.class1 { font: normal 12px @font-family; font-color: @red; div.class2 { border: 1px solid @red; } รุ่น CSS …
11 coding-style  css  ui  css3 

3
"คงที่" เป็นเบาะแสความหมายเกี่ยวกับการไร้สัญชาติ?
ฉันเพิ่งดำเนินการ refactoring ของโครงการขนาดกลางใน Java เพื่อกลับไปและเพิ่มการทดสอบหน่วย เมื่อฉันรู้ว่ามันเจ็บปวดแค่ไหนในการล้อเลียนและสถิตยศาสตร์ในที่สุดฉันก็ "ได้รับ" สิ่งที่ฉันได้อ่านเกี่ยวกับพวกเขาตลอดเวลานี้ (ฉันเป็นหนึ่งในคนเหล่านั้นที่ต้องเรียนรู้จากประสบการณ์โอ้สบายดี) ดังนั้นตอนนี้ที่ฉันใช้ Spring เพื่อสร้างวัตถุและโยงเข้าด้วยกันฉันจะกำจัดstaticคำหลักไปทางซ้ายและขวา (ถ้าฉันอาจต้องการเยาะเย้ยมันก็ไม่คงที่ในความหมายเดียวกับที่ Math.abs () ใช่ไหม?) สิ่งนี้คือฉันได้รับนิสัยการใช้staticเพื่อแสดงว่าวิธีการไม่ได้พึ่งพา ในสถานะวัตถุใด ๆ ตัวอย่างเช่น: //Before import com.thirdparty.ThirdPartyLibrary.Thingy; public class ThirdPartyLibraryWrapper { public static Thingy newThingy(InputType input) { new Thingy.Builder().withInput(input).alwaysFrobnicate().build(); } } //called as... ThirdPartyLibraryWrapper.newThingy(input); //After public class ThirdPartyFactory { public Thingy newThingy(InputType input) { …

8
แสดงความคิดเห็นนิพจน์ปกติ
มีวิธีปฏิบัติทั่วไปในการแสดงความคิดเห็นนิพจน์ทั่วไปหรือไม่: ความคิดเห็นแบบอินไลน์อ้างอิงส่วนต่าง ๆ ของ RegEx หรือความคิดเห็นทั่วไปสำหรับการแสดงออกทั้งหมด?

5
css - ใช้ universal '*' selector vs. html หรือ body selector?
การใช้สไตล์กับแท็ก body จะถูกนำไปใช้กับทั้งหน้าดังนั้น body { font-family: Verdana } จะถูกนำไปใช้กับทั้งหน้า สิ่งนี้สามารถทำได้ด้วย * {font-family: Verdana} ซึ่งจะนำไปใช้กับองค์ประกอบทั้งหมดและดังนั้นดูเหมือนว่าจะมีผลเช่นเดียวกัน ฉันเข้าใจหลักการที่ว่าในตัวอย่างแรกสไตล์จะถูกนำไปใช้กับแท็กหนึ่งส่วนเนื้อหาสำหรับทั้งหน้าในขณะที่ในตัวอย่างที่สองมีการใช้แบบอักษรกับองค์ประกอบ HTML แต่ละรายการ สิ่งที่ฉันถามคืออะไรคือความแตกต่างในทางปฏิบัติในการทำสิ่งที่เป็นนัยและอะไรคือเหตุผลสถานการณ์หรือแนวปฏิบัติที่ดีที่สุดที่นำไปสู่การใช้ซึ่งกันและกัน ผลข้างเคียงคือความเร็วอย่างแน่นอน (+1 Rob) ฉันสนใจเหตุผลที่แท้จริงที่สุดในการเลือกหนึ่งอย่างในแง่ของการใช้งาน

8
ตัวแปรแนะนำสถานะอย่างไร
ฉันกำลังอ่าน "มาตรฐานการเข้ารหัส C ++" และบรรทัดนี้อยู่ที่นั่น: ตัวแปรแนะนำสถานะและคุณควรจัดการกับสถานะน้อยที่สุดเท่าที่จะเป็นไปได้ด้วยอายุการใช้งานสั้นที่สุด ในที่สุดสิ่งใดที่กลายพันธุ์ไม่เหมาะสมกับรัฐ อะไรที่คุณควรจะมีการจัดการกับเป็นรัฐเล็ก ๆ น้อย ๆ ที่เป็นไปได้หมายถึง? ในภาษาที่ไม่บริสุทธิ์เช่น C ++ การจัดการของรัฐไม่ใช่สิ่งที่คุณกำลังทำจริง ๆ หรือ และวิธีอื่น ๆ ในการจัดการกับสภาพน้อยที่สุดเท่าที่จะทำได้นอกเหนือจากการ จำกัด อายุการใช้งานของตัวแปร?

4
ฉันควรใส่บรรทัดใหม่ก่อนหรือหลังตัวดำเนินการไบนารีหรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา เมื่อคุณอยู่ใน Python หรือ Javascript คุณควรใส่ตัวดำเนินการไบนารีที่ท้ายบรรทัดก่อนหน้าเสมอเพื่อป้องกันการขึ้นบรรทัดใหม่จากการยกเลิกรหัสของคุณก่อนกำหนด มันช่วยให้คุณตรวจจับข้อผิดพลาด แต่ใน C หรือ C ++ นี่ไม่ใช่ปัญหาดังนั้นฉันจึงสงสัยว่า: มีเหตุผลใดที่ฉันจะเลือกรุ่นที่สองมากกว่ารุ่นแรก return lots_of_text + 1; กับ return lots_of_text + 1; (ตัวอย่างเช่นข้อใดข้อหนึ่งช่วยป้องกันข้อผิดพลาดชนิดอื่นหรือไม่หรือข้อใดข้อหนึ่งพิจารณาว่าสามารถอ่านได้มากกว่า)
11 c++  coding-style 

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

3
“ วิธีการที่ไม่ดี” เป็นรหัสที่ไม่เกี่ยวข้องในการลองจับในที่สุดบล็อก?
นี่คือคำถามที่เกี่ยวข้อง: ในที่สุดการใช้ประโยคในการทำงานหลังจากกลับมาในสไตล์ที่ไม่ดี / เป็นอันตรายหรือไม่? ใน Q อ้างอิงแล้วรหัสสุดท้ายเกี่ยวข้องกับโครงสร้างที่ใช้และความจำเป็นในการดึงข้อมูลล่วงหน้า คำถามของฉันแตกต่างออกไปเล็กน้อยและฉันเชื่อว่ามันเป็นสิ่งที่ดีสำหรับผู้ชมที่กว้างขึ้น ตัวอย่างเฉพาะของฉันคือแอป C # winform แต่สิ่งนี้จะใช้กับ C ++ / Java ในที่สุดการใช้งานเช่นกัน ฉันสังเกตเห็นว่ามีการลองจับสองสามครั้งในที่สุดซึ่งมีโค้ดจำนวนมากที่ไม่เกี่ยวข้องกับข้อยกเว้นและการจัดการ / ล้างข้อมูลที่ฝังอยู่ภายในบล็อก และฉันจะยอมรับความลำเอียงของฉันต่อการพยายามบล็อกที่จับได้แน่นในที่สุดด้วยรหัสที่เกี่ยวข้องกับข้อยกเว้นและการจัดการอย่างใกล้ชิด นี่คือตัวอย่างของสิ่งที่ฉันเห็น ลองบล็อกจะมีการโทรขั้นต้นจำนวนมากและตัวแปรที่ตั้งค่านำไปสู่รหัสที่สามารถโยนได้ ข้อมูลการบันทึกจะได้รับการตั้งค่าและเรียกใช้ในบล็อกลองด้วย ในที่สุดบล็อกจะมีการเรียกการจัดรูปแบบแบบฟอร์ม / โมดูล / การควบคุม (แม้แอพกำลังจะปิดตัวลงดังที่แสดงในบล็อก catch) รวมถึงการสร้างวัตถุใหม่เช่นแผงควบคุม ประมาณ: methodName (... ) { ลอง { // มีโค้ดสำหรับวิธีการมากมาย ... // รหัสที่สามารถส่ง ... // มีโค้ดมากขึ้นสำหรับวิธีการและการส่งคืน ... } …

6
ดิ้นรนกับหลักการความรับผิดชอบเดี่ยว
ลองพิจารณาตัวอย่างนี้: ฉันมีเว็บไซต์ ช่วยให้ผู้ใช้สามารถโพสต์ (สามารถเป็นอะไรก็ได้) และเพิ่มแท็กที่อธิบายโพสต์ ในรหัสฉันมีสองคลาสที่แสดงถึงการโพสต์และแท็ก ให้เรียกชั้นเรียนเหล่านี้และPostTag Postดูแลการสร้างโพสต์การลบโพสต์อัปเดตโพสต์ ฯลฯ Tagดูแลการสร้างแท็กการลบแท็กอัปเดตแท็ก ฯลฯ มีการดำเนินการหนึ่งอย่างที่ขาดหายไป การเชื่อมโยงแท็กกับโพสต์ ฉันกำลังดิ้นรนกับผู้ที่ควรดำเนินการนี้ มันสามารถเข้ากันได้ดีในระดับเดียวกัน ในอีกด้านหนึ่งPostคลาสอาจมีฟังก์ชันที่ใช้Tagเป็นพารามิเตอร์จากนั้นเก็บไว้ในรายการของแท็ก บนมืออื่น ๆ ที่Tagชั้นจะมีฟังก์ชั่นที่ใช้เวลาที่Postเป็นพารามิเตอร์และการเชื่อมโยงไปยังTagPost ด้านบนเป็นเพียงตัวอย่างของปัญหาของฉัน จริง ๆ แล้วฉันกำลังเจอกับหลายคลาสที่คล้ายกันทั้งหมด มันสามารถเข้ากันได้ดีกับทั้งคู่ ขาดฟังก์ชั่นการใช้งานจริงลงในทั้งสองคลาสการประชุมหรือสไตล์การออกแบบที่มีอยู่เพื่อช่วยฉันแก้ปัญหานี้ ฉันสมมติว่าจะต้องมีบางสิ่งที่ขาดไปจากการเลือก? บางทีการใส่ไว้ในทั้งสองคลาสเป็นคำตอบที่ถูกต้องหรือไม่

10
ประโยคเดียวและแนวปฏิบัติที่ดี
ฉันเพิ่งได้รับนิสัยซึ่งฉันรู้ว่าพวกคุณหลายคนอาจขมวดคิ้ว แต่ในท้ายที่สุดช่วยให้ฉันจับตามองโครงสร้างรหัสทั่วโลกมากกว่าในโครงสร้างของวิธีการซ้ำ ๆ กัน (บางครั้ง): การจัดกลุ่มจำนวน ของคำสั่งในบรรทัดเดียวเช่นนี้ textBox1.Text = "Something!"; textBox2.Text = "Another thing!"; textBox3.Text = "Yet another thing!"; ตรงข้ามกับ textBox1.Text = "Something!"; textBox2.Text = "Another thing!"; textBox3.Text = "Yet another thing!"; ฉันใช้ในการทำเช่นนั้นสำหรับงานซ้ำ ๆ เพื่อรักษารหัสโดยรวมว่า "ความงาม" และเพื่อช่วยฉันในการติดตามโครงสร้างของโปรแกรมได้อย่างง่ายดาย แต่ฉันยอมรับว่าอาจไม่ใช่วิธีปฏิบัติที่ดี ฉันใช้มันบ่อยมากฉันจึงอยากรู้ว่าคุณคิดอย่างไรกับเรื่องนี้ นอกจากนี้คุณคิดว่าทุกคนที่จะต้องรักษารหัสของฉันมีปัญหากับวิธีนี้หรือไม่?

10
ฟังก์ชัน 'ทางคณิตศาสตร์' ควรเป็นไปตามสัญลักษณ์ทางคณิตศาสตร์หรือไม่
ฉันคิดว่าคำถามนี้จะถูกตั้งค่าสถานะเป็นอัตนัยทันที แต่สิ่งใดที่คุณคิดว่าดีกว่า: double volume(double pressure, double n_moles, double temperature) { return n_moles * BOLTZMANN_CONSTANT * temperature / pressure; } หรือ double volume(double P, double n, double T) { return n*R*T/P; } กล่าวอีกนัยหนึ่งฟังก์ชั่นที่ใช้สมการจะต้องปฏิบัติตามสัญกรณ์ของสมการนั้นหรือควรใช้ชื่อที่ละเอียดยิ่งขึ้น?

6
หลายค่าส่งคืนใน Java อย่างไร
บางครั้งคุณต้องการคืนค่าหลายค่าจากฟังก์ชัน ปกติแล้ววิธีนี้จะทำใน Java? ทางเลือกหนึ่งคือใช้อาร์เรย์เช่นข้อมูลโค้ด Python ที่ส่งคืนรายการหรือทูเปิล: value, success = read_unreliably() if success: print value ตัวเลือกอื่นคือการคืนค่าแฮช / dict เช่นตัวอย่าง JavaScript: var result = readUnreliably() if (result.success) { alert(value); } อีกหนึ่งการสร้างวัตถุที่กำหนดเองเพียงเพื่อวัตถุประสงค์นี้เช่นตัวอย่าง Java นี้: ReadUnreliablyResult result = readUnreliably() if (result.getSuccess()) { System.out.println(result.getValue()); } แน่นอนคุณสามารถใช้ตัวแปรส่วนกลางบางอย่างเพื่อเก็บสิ่งที่คุณต้องการแทนที่จะส่งผ่านสิ่งต่าง ๆ แต่สมมติว่านั่นไม่ใช่ตัวเลือก

5
อาร์กิวเมนต์ที่ระบุชื่อ (พารามิเตอร์) เป็นตัวช่วยการอ่าน
นานมาแล้วฉันตั้งโปรแกรมมากใน ADA และเป็นเรื่องปกติที่จะตั้งชื่ออาร์กิวเมนต์เมื่อเรียกใช้ฟังก์ชัน - SomeObject.DoSomething (SomeParameterName => someValue); ตอนนี้ C # รองรับการโต้เถียงที่มีชื่อฉันกำลังคิดถึงการกลับไปใช้นิสัยนี้ในสถานการณ์ที่อาจไม่ชัดเจนว่าการโต้แย้งหมายถึงอะไร คุณอาจโต้แย้งว่ามันควรจะชัดเจนว่าอาร์กิวเมนต์หมายถึงอะไร แต่ถ้าคุณมีอาร์กิวเมนต์บูลีนและผู้โทรผ่าน "true" หรือ "false" การกำหนดค่าด้วยชื่อทำให้ไซต์ไซต์อ่านได้ง่ายขึ้น contentFetcher.DownloadNote (หมายเหตุ, คู่มือ: จริง); ฉันเดาว่าฉันสามารถสร้าง Enums แทนการใช้จริงหรือเท็จ (Manual, Automatic ในกรณีนี้) คุณคิดอย่างไรเกี่ยวกับการใช้อาร์กิวเมนต์ที่มีชื่อเพื่อให้อ่านง่ายขึ้น

3
ใน Java 8 จะดีกว่าการใช้นิพจน์การอ้างอิงเมธอดหรือเมธอดที่ส่งคืนการใช้อินเตอร์เฟสการทำงานหรือไม่?
Java 8 เพิ่มแนวคิดของส่วนต่อประสานการทำงานรวมถึงวิธีการใหม่มากมายที่ออกแบบมาเพื่อใช้งานส่วนต่อประสานการทำงาน อินสแตนซ์ของอินเทอร์เฟซเหล่านี้สามารถสร้างได้อย่างกระชับโดยใช้นิพจน์การอ้างอิงเมธอด (เช่นSomeClass::someMethod) และนิพจน์แลมบ์ดา (เช่น(x, y) -> x + y) เพื่อนร่วมงานและฉันมีความคิดเห็นที่แตกต่างกันเมื่อควรใช้แบบฟอร์มเดียวหรือแบบอื่น (ซึ่ง "ดีที่สุด" ในกรณีนี้จะทำให้ "อ่านได้ง่ายที่สุด" และ "สอดคล้องกับมาตรฐานการปฏิบัติทั่วไป" มากที่สุด เทียบเท่า) โดยเฉพาะกรณีนี้เกี่ยวข้องกับกรณีที่ข้อมูลต่อไปนี้เป็นจริงทั้งหมด: ฟังก์ชั่นที่เป็นปัญหาไม่ได้ใช้งานนอกขอบเขตเดียว การตั้งชื่อให้ช่วยให้สามารถอ่านได้ (ตรงข้ามกับตรรกะที่เรียบง่ายพอที่จะดูว่าเกิดอะไรขึ้นอย่างรวดเร็ว) ไม่มีเหตุผลการเขียนโปรแกรมอื่นทำไมรูปแบบหนึ่งจะดีกว่าอีกรูปแบบหนึ่ง ความเห็นของฉันในปัจจุบันเกี่ยวกับเรื่องนี้คือการเพิ่มวิธีการส่วนตัวและการอ้างอิงโดยวิธีการอ้างอิงเป็นวิธีที่ดีกว่า รู้สึกว่านี่เป็นวิธีที่คุณสมบัติถูกออกแบบมาให้ใช้และดูเหมือนง่ายขึ้นในการสื่อสารสิ่งที่เกิดขึ้นผ่านชื่อวิธีการและลายเซ็น (เช่น "บูลีน isResultInFuture (ผลผลลัพธ์)" ชัดเจนว่ากำลังส่งคืนบูลีน) นอกจากนี้ยังทำให้วิธีการส่วนตัวนำมาใช้ซ้ำได้มากขึ้นหากการปรับปรุงในอนาคตให้กับชั้นเรียนต้องการใช้ประโยชน์จากการตรวจสอบเดียวกัน แต่ไม่ต้องการเครื่องมือห่อหุ้มส่วนต่อประสานการทำงาน การตั้งค่าของเพื่อนร่วมงานของฉันคือการมีวิธีการที่ส่งกลับอินสแตนซ์ของอินเทอร์เฟซ (เช่น "Predicate resultInFuture ()") สำหรับฉันแล้วมันรู้สึกว่ามันไม่ได้เป็นวิธีที่จะใช้คุณสมบัติรู้สึก clunkier เล็กน้อยและดูเหมือนว่ามันยากที่จะสื่อสารความตั้งใจผ่านการตั้งชื่อ เพื่อให้ตัวอย่างคอนกรีตนี้นี่คือรหัสเดียวกันเขียนในสไตล์ที่แตกต่าง: public class ResultProcessor { public void …

4
คุณเก็บรหัสด้วยการอ่าน / การเรียกกลับต่อเนื่องได้อย่างไร?
สรุป: มีรูปแบบการปฏิบัติที่ดีที่สุดบางอย่างที่ฉันสามารถติดตามเพื่อให้โค้ดของฉันสามารถอ่านได้แม้จะใช้รหัสอะซิงโครนัสและการโทรกลับหรือไม่ ฉันใช้ไลบรารี JavaScript ที่ทำสิ่งต่างๆมากมายแบบอะซิงโครนัสและอาศัยการโทรกลับอย่างหนัก ดูเหมือนว่าการเขียนวิธี "โหลด A, โหลด B, ... " ง่าย ๆ นั้นค่อนข้างซับซ้อนและยากที่จะติดตามโดยใช้รูปแบบนี้ ขอยกตัวอย่าง (contrived) สมมติว่าฉันต้องการโหลดรูปภาพจำนวนมาก (แบบอะซิงโครนัส) จากเว็บเซิร์ฟเวอร์ระยะไกล ใน C # / async ฉันจะเขียนสิ่งนี้: disableStartButton(); foreach (myData in myRepository) { var result = await LoadImageAsync("http://my/server/GetImage?" + myData.Id); if (result.Success) { myData.Image = result.Data; } else { write("error loading …

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