คำถามติดแท็ก code-quality

คำถามสำหรับแนวทางปฏิบัติที่ดีที่สุดสำหรับการเขียนโค้ดคุณภาพสูง

11
คุณจะทำงานอย่างมีประสิทธิผลได้อย่างไรเมื่อจัดการกับโค้ดที่เขียนไม่ดีอย่างมาก?
ฉันไม่ได้มีประสบการณ์การทำงานในอุตสาหกรรมซอฟต์แวร์มากนักการเรียนรู้ด้วยตนเองและมีส่วนร่วมในโอเพ่นซอร์สก่อนที่จะตัดสินใจทำงาน ตอนนี้ฉันทำงานเพื่อเงินฉันก็ต้องจัดการกับสิ่งที่ไม่พึงประสงค์ซึ่งเป็นเรื่องปกติ เมื่อเร็ว ๆ นี้ฉันได้รับมอบหมายให้เพิ่มการบันทึกลงในโครงการ SharePoint ขนาดใหญ่ซึ่งเขียนโดยโปรแกรมเมอร์บางคนซึ่งเห็นได้ชัดว่ากำลังเรียนรู้ที่จะเขียนโค้ดเกี่ยวกับงาน หลังจาก 2 ปีของการทำงานร่วมกันลูกค้าเปลี่ยนไปใช้ บริษัท ของเรา แต่ความเสียหายเสร็จสิ้นและตอนนี้ฉันต้องการรักษารหัสนี้ไว้ ไม่ใช่ว่ารหัสอ่านยากเกินไป แม้จะมีปัญหา - แต่ละโครงการมีชั้นเรียนหนึ่งที่มีวิธีการคัดลอกวางหลาย, การทำifรังขนาดใหญ่, ระบบฮังการี, การเชื่อมต่อที่ไม่ขาดตอน - มันยังคงอ่านได้ อย่างไรก็ตามฉันพบว่าตัวเองไม่ได้ผลแม้จะทำอะไรง่ายๆแค่เพิ่มการบันทึก โดยทั่วไปฉันแค่ต้องผ่านขั้นตอนของรหัสและเพิ่มการโทรติดตาม แต่ความโง่เขลาของรหัสเป็นที่น่ารำคาญมากที่ฉันได้รับเหนื่อยภายใน 10 นาทีของการเริ่มต้น ในตอนแรกฉันใช้เพื่อเพิ่มusingโครงสร้างลดการซ้อนโดยย้อนกลับifเปลี่ยนชื่อตัวแปรเป็นชื่อที่อ่านได้ - แต่โครงการมีขนาดใหญ่และในที่สุดฉันก็ยอมแพ้ ฉันรู้ว่านี่ไม่ใช่งานที่ฉันควรทำ แต่อย่างน้อยการลดความยุ่งเหยิงก็ทำให้ฉันได้รับรางวัลทางจิตวิทยาบางอย่างเพื่อที่ฉันจะได้ไปต่อ ทีนี้เคล็ดลับก็หยุดทำงานและฉันก็ยังมีงานอีก 60% ที่ต้องทำ ฉันเริ่มมีอาการปวดหัวหลังเลิกงานและฉันไม่ได้รับความพึงพอใจอีกต่อไปที่ฉันเคยได้รับ - ซึ่งมักจะอนุญาตให้ฉันใช้รหัสเป็นเวลา 10 ชั่วโมงตรงและยังรู้สึกสดชื่น นี่ไม่ใช่แค่เสียงโวยวายครั้งใหญ่เพียงเพราะฉันมีคำถามจริง: มีวิธีที่จะรักษาประสิทธิผลและไม่ต่อสู้กับกังหันลมหรือไม่? มีชนิดของเคล็ดลับจิตวิทยาบางอย่างที่จะพักที่เน้นในงานแทนการคิด“วิธีการโง่ที่ ?”ทุกครั้งที่ผมเห็นเคล็ดลับฉลาดอีกโดยโปรแกรมเมอร์ก่อนหน้านี้หรือไม่? ปัญหาของการเพิ่มการบันทึกคือฉันต้องเข้าใจจริงๆว่าโค้ดทำอะไรและการทำเช่นนั้นจะทำให้สมองของฉันเจ็บอย่างไม่เป็นที่พอใจ

5
ทำไมจำนวนเวทมนต์จำนวนมากจึงยอมรับได้ใน CSS และ SVG
บ่อยครั้งที่ฉันเห็นคำถามในรายการคำถามเครือข่ายที่น่าสนใจเช่นนี้ซึ่งโดยทั่วไปแล้วถามว่า "ฉันจะวาดรูปทรงโดยพลการใน CSS ได้อย่างไร" คำตอบก็คือบล็อกข้อมูล CSS หรือ SVG สองกลุ่มที่มีค่าฮาร์ดโค้ดแบบสุ่มจำนวนมากซึ่งสร้างรูปร่างตามที่ร้องขอ เมื่อฉันดูที่นี้ฉันคิดว่า 'Yuck! สิ่งที่น่าเกลียดของรหัส ฉันหวังว่าฉันจะไม่เห็นสิ่งประเภทนี้ในโครงการของฉัน ' อย่างไรก็ตามฉันเห็นประเภทของคำถาม & บ่อยครั้งมากและมีผู้ติดตามจำนวนมากดังนั้นชุมชนจึงไม่คิดว่าพวกเขาจะไม่ดี แต่ทำไมถึงเป็นที่ยอมรับ? มาจากประสบการณ์การใช้งานส่วนหลังของฉันสิ่งนี้ไม่สมเหตุสมผลสำหรับฉัน เหตุใดจึงเป็นเช่นนั้นสำหรับ CSS / SVG

10
มีสิ่งใดที่มีฟังก์ชั่น / เมธอดส่วนตัวมากเกินไปหรือไม่?
ฉันเข้าใจถึงความสำคัญของรหัสที่มีเอกสารดี แต่ฉันก็เข้าใจถึงความสำคัญของรหัสการจัดทำเอกสารด้วยตนเอง ยิ่งง่ายต่อการอ่านฟังก์ชั่นโดยเฉพาะยิ่งเราสามารถเดินหน้าได้เร็วขึ้นในระหว่างการบำรุงรักษาซอฟต์แวร์ ด้วยที่กล่าวว่าฉันชอบที่จะแยกฟังก์ชั่นใหญ่เป็นคนเล็ก ๆ แต่ฉันทำจนถึงจุดที่ชั้นเรียนสามารถมีมากกว่าห้าคนเพื่อรับใช้วิธีการเดียวเท่านั้น ทีนี้คูณวิธีการส่วนตัวห้าวิธีด้วยวิธีสาธารณะห้าวิธีและคุณจะได้วิธีซ่อนเร้นประมาณยี่สิบห้าวิธีซึ่งอาจเรียกได้โดยสาธารณะเหล่านั้นเพียงครั้งเดียว แน่นอนว่าตอนนี้การอ่านวิธีสาธารณะนั้นง่ายขึ้น แต่ฉันอดไม่ได้ที่จะคิดว่าการมีฟังก์ชั่นมากเกินไปนั้นเป็นการฝึกฝนที่ไม่ดี [แก้ไข] มีคนถามฉันว่าทำไมฉันคิดว่าการมีฟังก์ชั่นมากเกินไปนั้นเป็นการฝึกฝนที่ไม่ดี คำตอบง่าย ๆ : มันเป็นความรู้สึกทางเดินอาหาร ความเชื่อของฉันไม่ใช่เพียงหนึ่งบิตที่ได้รับการสนับสนุนจากประสบการณ์ด้านวิศวกรรมซอฟต์แวร์นานนับชั่วโมง มันเป็นความไม่แน่นอนที่ทำให้ฉัน "บล็อกนักเขียน" แต่สำหรับโปรแกรมเมอร์ ในอดีตที่ผ่านมาฉันเพิ่งจะเขียนโปรแกรมโครงการส่วนบุคคล เมื่อไม่นานมานี้ฉันได้ย้ายไปยังโครงการที่ทำงานเป็นทีม ตอนนี้ฉันต้องการให้แน่ใจว่าคนอื่นสามารถอ่านและเข้าใจรหัสของฉันได้ ฉันไม่แน่ใจว่าจะปรับปรุงความชัดเจนได้อย่างไร ในมือข้างหนึ่งฉันกำลังคิดที่จะแยกฟังก์ชั่นใหญ่หนึ่งอันออกเป็นฟังก์ชันย่อยที่มีชื่อที่เข้าใจได้ แต่มีอีกด้านหนึ่งของฉันบอกว่ามันซ้ำซ้อน ดังนั้นฉันขอให้สิ่งนี้สอนตัวเองเพื่อเลือกเส้นทางที่ถูกต้อง [แก้ไข] ด้านล่างฉันรวมสองรุ่นว่าฉันสามารถแก้ปัญหาของฉันได้อย่างไร คนแรกแก้มันโดยไม่แยกชิ้นใหญ่ของรหัส คนที่สองไม่สิ่งที่แยกจากกัน รุ่นแรก: public static int Main() { // Displays the menu. Console.WriteLine("Pick your option"); Console.Writeline("[1] Input and display a polynomial"); Console.WriteLine("[2] …

12
ฉันควรใช้ตัวแปรซ้ำหรือไม่
ฉันควรใช้ตัวแปรซ้ำหรือไม่ ฉันรู้ว่าวิธีปฏิบัติที่ดีที่สุดหลายอย่างบอกว่าคุณไม่ควรทำในภายหลังเมื่อนักพัฒนาซอฟต์แวร์คนอื่นกำลังดีบักโค้ดและมีตัวแปร 3 ตัวที่มีลักษณะเหมือนกันและความแตกต่างเพียงอย่างเดียวคือพวกมันถูกสร้างขึ้นในสถานที่ต่าง ๆ ในรหัส สับสน. การทดสอบหน่วยเป็นตัวอย่างที่ดีของสิ่งนี้ แต่ผมไม่ทราบว่าการปฏิบัติที่ดีที่สุดคือใช้เวลาส่วนใหญ่กับมัน ตัวอย่างเช่นพวกเขาบอกว่าไม่ได้ "แทนที่" พารามิเตอร์วิธีการ แนวทางปฏิบัติที่ดีที่สุดคือแม้จะขัดกับโมฆะตัวแปรก่อนหน้านี้ (ใน Java มี Sonar ที่ให้คำเตือนเมื่อคุณกำหนดให้nullกับตัวแปรที่คุณไม่จำเป็นต้องเรียกมันไปที่ตัวรวบรวมขยะตั้งแต่ Java 6 คุณไม่สามารถควบคุมได้เสมอ คำเตือนใดปิดอยู่ส่วนใหญ่เป็นค่าเริ่มต้น)

19
OOP ปฏิบัติตามคำสัญญาในการใช้รหัสซ้ำหรือไม่ มีทางเลือกอะไรบ้างในการใช้รหัสซ้ำ
บางทีสัญญาที่ยิ่งใหญ่ที่สุดของการใช้กระบวนทัศน์เชิงวัตถุคือการนำโค้ดกลับมาใช้ใหม่ บางคนโต้แย้งว่าเรื่องนี้ประสบความสำเร็จ เหตุใดจึงประสบความสำเร็จ (ไม่) รหัสนำมาใช้ใหม่ตามที่ OOP กำหนดไว้หรือไม่ทำให้โครงการมีประสิทธิผลมากขึ้น หรือจัดการได้มากขึ้น? หรือง่ายต่อการบำรุงรักษา? หรือมีคุณภาพมากขึ้น? อาจเราทุกคนยอมรับว่าการใช้รหัสซ้ำเป็นสิ่งที่ดี แต่มีหลายวิธีในการบรรลุเป้าหมายนี้ คำถามนี้เกี่ยวกับวิธีการใช้รหัสซ้ำที่เสนอโดย OOP มันเป็นสิ่งที่ดีหรือไม่? มีวิธีการที่ดีกว่าในการนำโค้ดกลับมาใช้ใหม่มากกว่าการวางแนววัตถุการจัดกลุ่มย่อย มีวิธีไหนดีกว่ากัน? ทำไม ? บอกเล่าประสบการณ์ของคุณกับการใช้ OOP ซ้ำหรือกระบวนทัศน์อื่น ๆ

10
ในกรณีใดรหัสน้อยไม่ดีขึ้น? [ปิด]
ฉันเพิ่งปรับปรุงรหัสบางส่วนในที่ทำงานเมื่อเร็ว ๆ นี้และฉันคิดว่าฉันทำงานได้ดี ฉันลดโค้ด 980 บรรทัดไปที่ 450 และลดจำนวนคลาสลงครึ่งหนึ่ง เมื่อแสดงสิ่งนี้ต่อเพื่อนร่วมงานของฉันบางคนไม่เห็นด้วยว่านี่เป็นการปรับปรุง พวกเขากล่าวว่า - "บรรทัดที่น้อยกว่าของรหัสไม่จำเป็นต้องดีกว่า" ฉันสามารถเห็นได้ว่าอาจมีกรณีร้ายแรงที่ผู้คนเขียนเส้นยาวจริง ๆ และ / หรือใส่ทุกอย่างในวิธีการเดียวเพื่อบันทึกสองสามบรรทัด แต่นั่นไม่ใช่สิ่งที่ฉันทำ รหัสในความคิดของฉันมีโครงสร้างที่ดีและง่ายต่อการเข้าใจ / บำรุงรักษาเนื่องจากมันมีขนาดเพียงครึ่งเดียว ฉันกำลังดิ้นรนเพื่อดูว่าทำไมทุกคนต้องการทำงานกับรหัสสองเท่าที่จำเป็นสำหรับการทำงานให้เสร็จและฉันสงสัยว่าถ้าใครรู้สึกเหมือนเพื่อนร่วมงานของฉันและสามารถสร้างกรณีที่ดีสำหรับการมีรหัสมากกว่า ?

9
อะไรคือความสมดุลที่เหมาะสมระหว่างความสอดคล้องของรหัสและการปรับปรุงรหัส
เมื่อเร็ว ๆ นี้ฉันได้พูดคุยกับเพื่อนร่วมงานเกี่ยวกับรูปแบบโค้ด เขาได้โต้แย้งว่าการใช้งาน API และรูปแบบทั่วไปที่คุณใช้ควรคล้ายกันมากที่สุดกับรหัสที่ล้อมรอบหากไม่ได้ใช้ codebase โดยรวมเช่นเดียวกับที่คุณใช้กับการปรากฏตัวของโค้ด . ตัวอย่างเช่นถ้าฉันเพิ่มวิธีไปยังคลาส DAO ใน C # ฉันจะลองใช้ LINQ ที่เหมาะสมเพื่อช่วยให้รหัสของฉันสะอาดและง่ายต่อการบำรุงรักษาแม้ว่าจะไม่มีวิธีการอื่นในชั้นเรียนที่ใช้มันอยู่ อย่างไรก็ตามเพื่อนร่วมงานของฉันจะโต้แย้งว่าฉันไม่ควรใช้มันในกรณีนั้นเพราะมันจะขัดกับสไตล์ที่มีอยู่ของคลาสนั้นและยากที่จะเข้าใจ ในตอนแรกฉันพบว่าตำแหน่งของเขาค่อนข้างรุนแรง แต่หลังจากคิดไปพักหนึ่งฉันก็เริ่มเห็นประเด็นของเขา ด้วยตัวอย่าง LINQ สมมุติบางทีคลาสนี้อาจไม่มีเพราะเพื่อนร่วมงานของฉันไม่คุ้นเคยกับ LINQ? ถ้าเป็นเช่นนั้นรหัสของฉันจะไม่สามารถรักษาได้สำหรับเพื่อนนักพัฒนาของฉันถ้าฉันไม่ได้ใช้ ในทางกลับกันถ้าฉันเชื่ออย่างแท้จริงว่าการใช้เทคนิคดังกล่าวจะส่งผลให้โค้ดสะอาดยิ่งขึ้นดังนั้นฉันไม่ควรใช้แม้ว่าจะมีความแตกต่างอย่างมากจากโค้ดรอบ ๆ หรือไม่ ฉันคิดว่าข้อโต้แย้งของเพื่อนร่วมงานของฉันคือถ้าเราทุกคนดำเนินการเกี่ยวกับการใช้งานที่คล้ายกันใน codebase ด้วยวิธีที่แตกต่างกันและเราแต่ละคนคิดว่าวิธีของเรานั้น "ดีที่สุด" ในที่สุดรหัสโดยรวมก็ยากขึ้น เข้าใจไหม. อย่างไรก็ตามในตอนนี้ฉันยังคงคิดว่าหากเราติดตามรหัสที่มีอยู่มากเกินไปคุณภาพก็จะช้าลงเมื่อเวลาผ่านไป ดังนั้นรูปแบบส่วนใดของรูปแบบโค้ดและขอบเขตที่เราควรวาดเส้นระหว่างการคงเส้นคงวาและการปรับปรุง

7
มีบางอย่างผิดปกติกับวิธีที่เราใช้ควบคุมเวอร์ชันหรือไม่
ฉันทำงานกับทีมโปรแกรมเมอร์ในฐานะนักวิเคราะห์ธุรกิจ เราเพิ่งเปิดตัวรุ่น 2.0 ของผลิตภัณฑ์ของเราและกำลังทำงานในรุ่นถัดไปที่จะออกใน 3 เดือน (มันเป็นผลิตภัณฑ์ซอฟต์แวร์ภายใน) น่าเสียดายที่เวอร์ชัน 2.0 มีปัญหาบางอย่างที่ต้องแก้ไขและเราจะปรับใช้การแก้ไขเหล่านี้ในอีกไม่กี่สัปดาห์ ปัญหาคือเราไม่ต้องการปรับใช้การเปลี่ยนแปลงที่ยังทำงานอยู่และไม่ได้กำหนดไว้สำหรับการเปิดตัวอีก 3 เดือน โปรแกรมเมอร์ตัดสินใจว่าวิธีการจัดการสิ่งนี้คือจะมีการตรวจสอบเฉพาะรหัสสำหรับข้อบกพร่องและรหัสสำหรับการปรับปรุงใหม่จะถูกเก็บไว้ในเครื่องท้องถิ่นของนักพัฒนาจนกว่าจะเสร็จสิ้น ฉันจะต้องได้รับบิลด์ท้องถิ่นจากเครื่องของพวกเขาเพื่อทดสอบเพราะถ้าพวกเขาตรวจสอบในรหัสและเราต้องผลักดันแพตช์อื่นเพื่อแก้ไขข้อบกพร่องที่เรายังไม่ต้องการรวมการปรับปรุงเหล่านั้น นอกจากนี้ยังมีปัญหาที่ไฟล์รหัสเดียวกันมีทั้งการแก้ไขข้อบกพร่องและการปรับปรุงดังนั้นพวกเขาจึงต้องคัดลอกไฟล์รหัสในเครื่องจากนั้นทำการเปลี่ยนแปลงเพื่อแก้ไขข้อบกพร่องและตรวจสอบว่าหนึ่งในนั้นแล้วกลับมาทำงานกับการปรับปรุง พวกเขาทำสำเนาเฉพาะที่ ดูเหมือนจะค่อนข้างซับซ้อน - มีวิธีที่ดีกว่าในการจัดการสถานการณ์ประเภทนี้หรือไม่? เรากำลังใช้เซิร์ฟเวอร์มูลฐานทีมและ Visual Studio 2010

12
วิธีการย้อนกลับและดูรหัสด้วยตาสด [ปิด]
ฉันใช้เวลาหนึ่งปีที่แล้วในฐานะทีมคนเดียวที่พัฒนาแอปพลิเคชันที่มีลูกเล่นมากมาย (35,000+ LoC สำหรับสิ่งที่คุ้มค่า) ปัจจุบันมีเสถียรภาพและในการผลิต อย่างไรก็ตามฉันรู้ว่าทักษะของฉันเริ่มขึ้นเมื่อเริ่มต้นโครงการดังนั้นไม่ต้องสงสัยเลยว่ามีปัญหาสำคัญในรหัส ณ จุดนี้ปัญหาส่วนใหญ่อยู่ในสถาปัตยกรรมโครงสร้างและการโต้ตอบ - ปัญหาง่าย ๆ แม้แต่ปัญหาด้านสถาปัตยกรรม / การออกแบบก็ถูกกำจัดออกไปแล้ว โชคไม่ดีที่ฉันใช้เวลากับโครงการนี้มากจนฉันคิดว่ามันยาก - เข้าใกล้จากมุมมองใหม่เพื่อดูข้อบกพร่องที่ฝังลึกหรือมีอยู่ในการออกแบบ ฉันจะก้าวออกนอกหัวและนอกรหัสของฉันเพื่อให้ได้รูปลักษณ์ใหม่และทำให้ดีขึ้นได้อย่างไร

12
หากรหัสทดสอบหน่วยของคุณ“ มีกลิ่น” มีความสำคัญหรือไม่?
โดยปกติฉันแค่ทำการทดสอบหน่วยของฉันด้วยกันโดยใช้การคัดลอกและวางและวิธีปฏิบัติที่ไม่ดีอื่น ๆ การทดสอบหน่วยมักจะดูน่าเกลียดมากพวกเขาเต็มไปด้วย "กลิ่นรหัส" แต่สิ่งนี้สำคัญหรือไม่ ฉันมักจะบอกตัวเองตราบใดที่รหัส "ของจริง" คือ "ดี" นั่นคือทั้งหมดที่สำคัญ นอกจากนี้การทดสอบหน่วยมักจะต้องการ "แฮ็กที่มีกลิ่นเหม็น" ที่หลากหลายเช่นฟังก์ชั่นขัดถู ฉันควรกังวลเกี่ยวกับการทดสอบหน่วยที่ออกแบบมาไม่ดี ("เหม็น") อย่างไร

10
การเขียนโปรแกรม“ เหมาะสม” เมื่อไรจะไม่สำคัญอีกต่อไป?
ฉันกำลังสร้างเกม Android ในเวลาว่าง มันใช้ไลบรารีlibgdxดังนั้นการยกของหนักก็ทำได้สำหรับฉัน ขณะที่กำลังพัฒนาฉันเลือกประเภทข้อมูลบางขั้นตอนอย่างไม่ระมัดระวัง ฉันใช้ hashtable เพราะฉันต้องการบางสิ่งบางอย่างใกล้เคียงกับอาเรย์ ค่าคีย์ที่มนุษย์อ่านได้ ในที่อื่น ๆ เพื่อให้ได้สิ่งที่คล้ายกันฉันใช้เวกเตอร์ ฉันรู้ว่า libgdx มีคลาส vector2 และ vector3 แต่ฉันไม่เคยใช้เลย เมื่อฉันเจอปัญหาแปลก ๆ และค้นหา Stack Overflow เพื่อขอความช่วยเหลือฉันเห็นผู้คนจำนวนมากเพิ่งตั้งคำถามใหม่ที่ใช้ประเภทข้อมูลบางประเภทเมื่ออีกคนหนึ่งมีเทคนิค "เหมาะสม" เช่นเดียวกับการใช้ ArrayList เพราะมันไม่ต้องการขอบเขตที่กำหนดเมื่อเทียบกับการกำหนด int [] ใหม่ด้วยขอบเขตที่รู้จักกันใหม่ หรือแม้แต่เรื่องเล็กน้อยเช่นนี้ for(int i = 0; i < items.length; i ++) { // do something } ฉันรู้ว่ามันประเมินรายการความยาวของการวนซ้ำทุกครั้ง อย่างไรก็ตามฉันก็รู้ว่าสิ่งของจะไม่เกิน 15 …

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

7
มูลค่าที่แท้จริงของรูปแบบรหัสที่สอดคล้องกันคืออะไร
ฉันเป็นส่วนหนึ่งของทีมที่ปรึกษาที่ใช้โซลูชันใหม่สำหรับลูกค้า ฉันรับผิดชอบในการทบทวนโค้ดส่วนใหญ่ใน codebase ฝั่งไคลเอ็นต์ (ตอบโต้และจาวาสคริปต์) ฉันสังเกตเห็นว่าสมาชิกในทีมบางคนใช้รูปแบบการเข้ารหัสที่ไม่เหมือนใครจนถึงจุดที่ฉันสามารถเลือกไฟล์แบบสุ่มโดยบอกว่าใครเป็นผู้แต่งจากสไตล์คนเดียว ตัวอย่างที่ 1 (ฟังก์ชั่นอินไลน์แบบครั้งเดียว) React.createClass({ render: function () { var someFunc = function () { ... return someValue; }; return <div>{someFunc()}</div> } }); ผู้เขียนระบุว่าด้วยการกำหนดชื่อที่มีความหมายให้กับบางส่วนการตัดรหัสจะง่ายต่อการอ่าน ฉันเชื่อว่าการใช้ฟังก์ชั่นและเพิ่มความคิดเห็นแทนการใช้เอฟเฟกต์เดียวกันสามารถทำได้ ตัวอย่างที่ 2 (ฟังก์ชันที่ไม่ถูกผูก) function renderSomePart(props, state) { return ( <div> <p>{props.myProp}</p> <p>{state.myState}</p> </div> ); } React.createClass({ render: function () { …

4
ทำไม #include <iostream.h> ไม่ดี
ฉันกำลังอ่านหัวข้ออื่นที่ชายคนหนึ่งถามเกี่ยวกับหนังสือ C ++ สำหรับผู้เริ่มต้นและหนึ่งในโปรแกรมเมอร์ที่ตอบรับเขียนสิ่งนี้: คำเตือนบางอย่าง: หลีกเลี่ยงหนังสือทุกเล่มที่มีคำว่า "สวัสดีโลก" ที่ระบุ #include &lt;iostream.h&gt; ฉันเปิดหนังสือ C ++ ของฉันและได้รวมส่วนหัว iostream อย่างที่แสดงไว้ด้านบน เหตุใดจึงไม่ดี คำแนะนำอื่น ๆ ที่ฉันควรทราบเมื่อเรียนรู้ C ++ คืออะไร พื้นหลัง: ฉันมีความเชี่ยวชาญใน C และฉันจะเริ่มเรียนรู้ C ++ ภาคการศึกษาถัดไปนี้

10
ตัวแปรสถานะเป็นความชั่วร้ายหรือไม่? [ปิด]
ตัวแปรสถานะเป็นสิ่งชั่วร้ายหรือไม่? ตัวแปรต่อไปนี้มีความผิดศีลธรรมอย่างลึกซึ้งและเป็นสิ่งที่ชั่วร้ายหรือไม่ที่จะใช้มัน "ตัวแปรบูลีนหรือเลขจำนวนเต็มที่คุณกำหนดค่าในบางสถานที่จากนั้นลงมาด้านล่างคุณตรวจสอบแล้วใน orther ที่จะทำอะไรหรือไม่เช่นเช่นใช้newItem = trueแล้วบางบรรทัดด้านล่างif (newItem ) then" ฉันจำได้ว่าทำสองโครงการที่ฉันละเลยการใช้ค่าสถานะทั้งหมดและจบลงด้วยสถาปัตยกรรม / รหัสที่ดีขึ้น อย่างไรก็ตามมันเป็นวิธีปฏิบัติทั่วไปในโครงการอื่น ๆ ที่ฉันทำงานด้วยและเมื่อโค้ดเติบโตและมีการเพิ่มแฟล็ก IMHO code-spaghetti ก็จะโตขึ้นเช่นกัน คุณจะบอกว่ามีกรณีใดบ้างที่การใช้ค่าสถานะเป็นวิธีปฏิบัติที่ดีหรือจำเป็นหรือไม่หรือคุณยอมรับว่าการใช้ค่าสถานะในรหัสคือ ... ค่าสถานะสีแดงและควรหลีกเลี่ยง / refactored ฉันฉันเพิ่งได้รับโดยการทำฟังก์ชั่น / วิธีการที่ตรวจสอบสถานะในเวลาจริงแทน

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