คำถามติดแท็ก programming-practices

Programming Practices เป็นวิธีที่ใช้กันทั่วไปหรือไม่ใช้กันทั่วไปในการพัฒนาซอฟต์แวร์ สิ่งเหล่านี้อาจรวมถึงสิ่งต่าง ๆ เช่นการพัฒนาแบบ Agile, Kanban, ทางลัดการเข้ารหัส ฯลฯ

16
ทำไมทางลัดเช่น x + = y จึงถือว่าเป็นแนวปฏิบัติที่ดี
ฉันไม่รู้ว่าสิ่งเหล่านี้เรียกว่าอะไร แต่ฉันเห็นพวกเขาตลอดเวลา การใช้งาน Python นั้นมีลักษณะดังนี้: x += 5x = x + 5เป็นสัญกรณ์ชวเลข แต่ทำไมถึงถือว่าเป็นวิธีปฏิบัติที่ดี? ฉันเจอมันเกือบทุกเล่มหรือแบบฝึกหัดการเขียนโปรแกรมที่ฉันได้อ่านสำหรับ Python, C, Rและอื่น ๆ ฉันเข้าใจว่าสะดวกแล้วประหยัดการกดแป้นสามครั้งรวมถึงช่องว่าง แต่พวกเขาเสมอดูเหมือนจะเดินทางฉันขึ้นเมื่อฉันอ่านรหัสและอย่างน้อยในใจของฉันให้มันน้อยอ่านไม่ ฉันขาดเหตุผลบางอย่างที่ชัดเจนและชัดเจนเหล่านี้ถูกใช้ทั่วสถานที่หรือไม่

16
วัฒนธรรม Grokking Java - ทำไมสิ่งต่าง ๆ ถึงหนักนัก มันเหมาะกับอะไร? [ปิด]
ฉันเคยใช้รหัสใน Python มาก ตอนนี้สำหรับเหตุผลการทำงานฉันรหัสใน Java โครงการที่ฉันทำมีขนาดค่อนข้างเล็กและ Python อาจทำงานได้ดีขึ้น แต่มีเหตุผลที่ไม่เป็นวิศวกรรมที่ถูกต้องในการใช้ Java (ฉันไม่สามารถอธิบายรายละเอียดได้) ไวยากรณ์ของ Java ไม่มีปัญหา มันเป็นเพียงภาษาอื่น แต่นอกเหนือจากไวยากรณ์แล้ว Java ยังมีวัฒนธรรมชุดวิธีการพัฒนาและวิธีปฏิบัติที่ถือว่า "ถูกต้อง" และสำหรับตอนนี้ฉันล้มเหลวอย่างสิ้นเชิงที่จะ "คร่ำครวญ" วัฒนธรรมนั้น ดังนั้นฉันจะขอบคุณคำอธิบายหรือพอยน์เตอร์ในทิศทางที่ถูกต้อง ตัวอย่างที่สมบูรณ์แบบน้อยที่สุดมีอยู่ในคำถาม Stack Overflow ที่ฉันเริ่มต้น: https://stackoverflow.com/questions/43619566/returning-a-result-with-several-values-the-java-way/43620339 ฉันมีงาน - แยก (จากสตริงเดียว) และจัดการชุดสามค่า ใน Python มันเป็นหนึ่งซับ (tuple) ใน Pascal หรือ C-5 ซับเร็กคอร์ด / struct ตามคำตอบที่เทียบเท่าของ struct มีอยู่ในไวยากรณ์ Java และสามมีอยู่ในห้องสมุด Apache …

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

16
เกือบเสร็จโครงการแล้ว แต่มีรหัสสปาเก็ตตี้ ฉันจะเขียนใหม่หรือพยายามส่งมันต่อไปหรือไม่? [ปิด]
ฉันเป็นนักพัฒนาเว็บมือใหม่ (มีประสบการณ์หนึ่งปี) สองสามสัปดาห์หลังจากเรียนจบฉันได้รับงานเพื่อสร้างเว็บแอปพลิเคชันสำหรับ บริษัท ที่เจ้าของเทคโนโลยีไม่มากนัก เขาคัดเลือกฉันเพื่อหลีกเลี่ยงการขโมยความคิดของเขาค่าใช้จ่ายในการพัฒนาสูงที่ บริษัท ให้บริการเรียกเก็บและมีใครบางคนที่อายุน้อยกว่าเขาสามารถไว้วางใจ onboard เพื่อรักษาโครงการในระยะยาว (ฉันมาถึงข้อสรุปเหล่านี้ด้วยตนเอง ) Cocky เมื่อฉันย้อนกลับไปตอนนั้นฉันได้รับอนุปริญญาด้านวิทยาศาสตร์คอมพิวเตอร์ ฉันกำลังโทรนัด หลังจากการวิจัยบางอย่างที่ฉันตัดสินบน PHP และเริ่มต้นด้วย PHP ธรรมดาไม่มีวัตถุเพียงรหัสขั้นตอนที่น่าเกลียด สองเดือนต่อมาทุกอย่างยุ่งเหยิงและมันยากที่จะก้าวหน้า แอปพลิเคชั่นเว็บมีขนาดใหญ่มาก ดังนั้นฉันตัดสินใจที่จะตรวจสอบกรอบ MVC ที่จะทำให้ชีวิตของฉันง่ายขึ้น นั่นคือสิ่งที่ฉันได้พบกับเด็กสุดเจ๋งในชุมชน PHP: Laravel ฉันชอบมากมันเรียนรู้ได้ง่ายและฉันก็เริ่มเขียนโค้ดทันที รหัสของฉันดูสะอาดและเป็นระเบียบมากขึ้น มันดูดีมาก แต่เว็บแอปพลิเคชั่นก็มีขนาดใหญ่อีกครั้ง บริษัท กดดันให้ฉันส่งเวอร์ชั่นแรกซึ่งพวกเขาต้องการปรับใช้อย่างชัดเจนและเริ่มมองหาลูกค้า เพราะ Laravel สนุกกับการทำงานมันทำให้ฉันจำได้ว่าทำไมฉันถึงเลือกอุตสาหกรรมนี้ตั้งแต่แรก - บางอย่างที่ฉันลืมไปแล้วในขณะที่ติดอยู่ในระบบการศึกษาที่ไม่ดี ดังนั้นฉันจึงเริ่มทำงานในโครงการเล็ก ๆ ในเวลากลางคืนอ่านเกี่ยวกับวิธีการและแนวปฏิบัติที่ดีที่สุด ฉันมาเยือน OOP, ย้ายไปออกแบบเชิงวัตถุและการวิเคราะห์และอ่านลุงบ๊อบหนังสือรหัสสะอาด สิ่งนี้ช่วยให้ฉันรู้ว่าฉันไม่รู้อะไรเลย ฉันไม่ทราบวิธีการสร้างซอฟต์แวร์ THE RIGHT WAY …

17
คำกล่าวของ Torvalds เกี่ยวกับโปรแกรมเมอร์ที่ดี [ปิด]
บังเอิญฉันสะดุดกับคำพูดต่อไปนี้โดย Linus Torvalds: "โปรแกรมเมอร์ไม่ดีต้องกังวลเกี่ยวกับโค้ดโปรแกรมเมอร์ที่ดีต้องกังวลเกี่ยวกับโครงสร้างข้อมูลและความสัมพันธ์ของพวกเขา" ฉันคิดเกี่ยวกับเรื่องนี้ในช่วงสองสามวันที่ผ่านมาและฉันก็ยังสับสนอยู่ (ซึ่งอาจเป็นสัญญาณที่ไม่ดี) ดังนั้นฉันจึงอยากจะพูดถึงสิ่งต่อไปนี้: การตีความในสิ่งนี้เป็นไปได้ / เหมาะสม? สิ่งที่สามารถนำไปใช้ / เรียนรู้จากมัน?

16
เกิดอะไรขึ้นกับความคิดเห็นที่อธิบายรหัสที่ซับซ้อน?
ผู้คนมากมายอ้างว่า "ความคิดเห็นควรอธิบาย" ทำไม "แต่ไม่ใช่" เป็นอย่างไร " บางคนบอกว่า "รหัสควรเป็นเอกสารด้วยตนเอง" และความคิดเห็นควรหายาก โรเบิร์ตซี. มาร์ตินอ้างว่า (พูดซ้ำตามคำพูดของฉัน) บ่อยครั้งที่ "ความคิดเห็นเป็นการขอโทษสำหรับการเขียนโค้ดที่ไม่ดี" คำถามของฉันมีดังต่อไปนี้: มีอะไรผิดปกติในการอธิบายอัลกอริทึมที่ซับซ้อนหรือโค้ดที่ยาวและซับซ้อนพร้อมความคิดเห็นเชิงอธิบาย ด้วยวิธีนี้แทนที่จะเป็นนักพัฒนาคนอื่น ๆ (รวมถึงตัวคุณเอง) ที่ต้องอ่านอัลกอริธึมทีละบรรทัดเพื่อหาว่ามันทำอะไรพวกเขาสามารถอ่านความคิดเห็นเชิงอธิบายที่เป็นมิตรที่คุณเขียนเป็นภาษาอังกฤษธรรมดา ภาษาอังกฤษได้รับการออกแบบเพื่อให้มนุษย์เข้าใจได้ง่าย อย่างไรก็ตาม Java, Ruby หรือ Perl ได้รับการออกแบบมาเพื่อสร้างความสมดุลระหว่างความสามารถในการอ่านของมนุษย์และความสามารถในการอ่านคอมพิวเตอร์ดังนั้นจึงทำให้ความสามารถในการอ่านข้อความของมนุษย์ลดลง มนุษย์สามารถเข้าใจภาษาอังกฤษได้เร็วขึ้นมากว่าเขา / เธอสามารถเข้าใจรหัสด้วยความหมายเดียวกัน (ตราบใดที่การดำเนินการนั้นไม่สำคัญ) ดังนั้นหลังจากเขียนโค้ดที่ซับซ้อนซึ่งเขียนด้วยภาษาการเขียนโปรแกรมที่มนุษย์สามารถอ่านได้บางส่วนทำไมไม่เพิ่มความคิดเห็นเชิงอธิบายที่กระชับและอธิบายการทำงานของโค้ดในภาษาอังกฤษที่เป็นมิตรและเข้าใจได้? บางคนจะพูดว่า "รหัสไม่ควรเข้าใจยาก", "ทำให้ฟังก์ชั่นเล็ก ๆ ", "ใช้ชื่อที่สื่อความหมาย", "อย่าเขียนรหัสสปาเก็ตตี้" แต่เราทุกคนรู้ว่าไม่เพียงพอ นี่เป็นเพียงแนวทาง - สิ่งสำคัญและมีประโยชน์ - แต่ไม่เปลี่ยนความจริงที่ว่าอัลกอริทึมบางอย่างมีความซับซ้อน และดังนั้นจึงยากที่จะเข้าใจเมื่ออ่านพวกเขาทีละบรรทัด เป็นเรื่องที่ไม่ดีหรือไม่ที่จะอธิบายอัลกอริทึมที่ซับซ้อนพร้อมความคิดเห็นสองสามบรรทัดเกี่ยวกับการทำงานทั่วไป เกิดอะไรขึ้นกับการอธิบายรหัสที่ซับซ้อนพร้อมความคิดเห็น

6
การเลือกระหว่างโครงการเดี่ยวหรือหลายโครงการในที่เก็บ git?
ในgitสภาพแวดล้อมที่เราได้ทำให้เป็นส่วนใหญ่โครงการเรากำลังเผชิญหนึ่งโครงการต่อพื้นที่เก็บข้อมูลหรือหลายโครงการต่อปัญหาการออกแบบพื้นที่เก็บข้อมูล ลองพิจารณาโครงการที่ทำให้เป็นโมดูล: myProject/ +-- gui +-- core +-- api +-- implA +-- implB วันนี้เรากำลังมีโครงการต่อหนึ่งพื้นที่เก็บข้อมูล มันให้อิสระในการ release แต่ละองค์ประกอบ tag แต่ละองค์ประกอบ แต่มันก็ยังเป็นเรื่องยุ่งยากสำหรับbranchส่วนประกอบที่บ่อยครั้งที่การแตกแขนงนั้นapiต้องการกิ่งไม้ที่เท่ากันcoreและส่วนประกอบอื่น ๆ เนื่องจากเราต้องการreleaseแต่ละองค์ประกอบเรายังสามารถได้รับความยืดหยุ่นที่คล้ายกันโดยใช้หลายโครงการต่อการออกแบบพื้นที่เก็บข้อมูล มีประสบการณ์อะไรบ้างและคุณได้จัดการกับปัญหาเหล่านี้อย่างไร?

15
ทำไมขนาดของโปรแกรมถึงใหญ่มาก
ถ้าเราดูโปรแกรมโบราณ Netscape Navigator หรือ Microsoft Word รุ่นก่อนหน้าโปรแกรมเหล่านั้นมีขนาดน้อยกว่า 50 MB ตอนนี้เมื่อฉันติดตั้ง google chrome ก็คือ 200 MB และ Slack เวอร์ชันเดสก์ท็อปคือ 300 MB ฉันอ่านเกี่ยวกับกฎบางอย่างที่โปรแกรมจะใช้หน่วยความจำที่มีอยู่ทั้งหมดไม่ว่าจะเป็นเท่าใด แต่ทำไม? ทำไมขนาดปัจจุบันของโปรแกรมจึงมีขนาดใหญ่เมื่อเทียบกับเมื่อ 10 หรือ 15 ปีก่อน? โปรแกรมไม่ทำงานอย่างมีนัยสำคัญมากขึ้นและดูไม่แตกต่างกันมาก มันคืออะไรหมูทรัพยากรตอนนี้หรือไม่

17
มีประโยชน์ในการรวบรวมรหัสของคุณตามที่คุณไป?
ฉันเพิ่งได้สัมภาษณ์งานซึ่งพวกเขาให้เวลาฉันหนึ่งชั่วโมงในการเขียนรหัสจริง มันไม่ได้เป็นจำนวนมากอาจน้อยกว่า 100 บรรทัด หลังจากนั้นประมาณ 45 นาทีฉันก็รวบรวมวิ่งแล้วก็ไปทำงาน ฉันอาจใช้เวลา 5-10 นาทีในการรวบรวมข้อผิดพลาดและข้อผิดพลาดเล็กน้อย แต่โดยรวมแล้วมันราบรื่นมาก (บังเอิญฉันได้รับข้อเสนอจากพวกเขา) อย่างไรก็ตามสิ่งที่ทำให้ฉันงงคือหลังจากที่ฉันส่งรหัสที่สมบูรณ์แล้วผู้สัมภาษณ์บอกฉันว่าสิ่งเดียวที่ฉันทำผิดคือ "ไม่ได้รวบรวมเมื่อฉันไป" ฉันถามเขาว่าอะไรคือความแตกต่างและเขาพูดว่า "คุณจะทำอย่างไรถ้าคุณทำโค้ดเสร็จและมันไม่ได้คอมไพล์ในเวลา" ในความเข้าใจของฉันนั่นเป็นอาร์กิวเมนต์ที่ไม่ถูกต้องเนื่องจาก "การรับโค้ดเพื่อรวบรวม" สำหรับความยาวของรหัสที่กำหนดมักเกี่ยวข้องกับการแก้ไขข้อผิดพลาดในการรวบรวมจำนวนคงที่และใช้เวลาค่อนข้างคงที่ซึ่งควรจะเหมือนกันไม่ว่าคุณจะทำตาม เสร็จสิ้นการเขียนรหัสหรือถ้าคุณ interleave กับรหัสเวลาของคุณ หากมีสิ่งใดขัดจังหวะการเข้ารหัสของคุณเพื่อค้นหาอัฒภาคที่ขาดหายไปอาจเป็นอันตรายต่อประสิทธิภาพของคุณ ยกเว้นในสถานการณ์ที่รุนแรงเมื่อฉันทดลองกับสิ่งคลุมเครือรอบ ๆ ขอบบนสิ่งต่างๆเช่นฟังก์ชั่นเสมือนในคลาสที่ได้รับ ฯลฯ ดูเหมือนว่าสมเหตุสมผลที่จะคาดหวังว่าโค้ดที่เขียนโดยนักพัฒนาที่มีประสบการณ์จะคอมไพล์ลบข้อผิดพลาดการพิมพ์เป็นครั้งคราว หากไม่เป็นเช่นนั้น ในเหตุการณ์ที่คล้ายคลึงกันอีกครั้งฉันได้รับ codebase ที่ไม่สมบูรณ์ในการสัมภาษณ์และขอให้เสร็จและทำการแก้ไขที่จำเป็นเพื่อให้มันทำงานได้ ฉันเริ่มจากการอ่านรหัสที่มีอยู่แล้วหลังจากนั้นไม่กี่นาที (ก่อนที่ฉันจะดูรหัสเสร็จ) ผู้สัมภาษณ์บอกฉันว่าเพียงพอแล้ว เมื่อฉันถามเขาว่าเขาจะทำอะไร (เช่น "ฉันทำผิดอะไร") เขาบอกฉันว่าเขาจะเริ่มต้นทันทีโดยรับรหัสเพื่อรวบรวม ทำไมถึงเกี่ยวข้องกัน? จากความเห็นของฉันและจากประสบการณ์ของฉันการคอมไพล์โค้ดบางส่วนนั้นเป็นการสุ่มหรือไม่เกี่ยวข้องกับสิ่งต่าง ๆ เช่นว่าเซมิโคลอนหายไปหรือไม่และเกี่ยวข้องกับความถูกต้องของโปรแกรมพื้นฐานเล็กน้อย (สำหรับฉันการเน้นไปที่การคอมไพล์ก็เหมือนกับการรันบทความผ่านการตรวจการสะกดคำโดยไม่ต้องพิสูจน์อักษรเพื่อตรวจสอบไวยากรณ์) หากคุณให้รหัสที่ไม่สมบูรณ์แก่ฉันสิ่งแรกที่ฉันจะทำคืออ่านมัน ฉันจะไม่พยายามรวบรวมจนกว่าฉันจะรู้ว่าโค้ดทำอะไรและฉันรู้ว่าอัลกอริทึมนั้นถูกต้อง อย่างไรก็ตามสิ่งเหล่านี้เป็นเหตุการณ์ที่เกิดขึ้นเมื่อไม่นานมานี้ แต่โดยทั่วไปฉันเคยได้ยินนักพัฒนาหลายคนพูดถึงการคอมไพล์โค้ดของพวกเขาขณะที่พวกเขาไปด้วยกัน แต่ก็ไม่มีใครสามารถบอกฉันถึงประโยชน์ของการทำเช่นนั้น ฉันเข้าใจถึงประโยชน์ของการทดสอบโค้ดของคุณเมื่อคุณดำเนินการ …

17
คุณสมดุลระหว่าง“ ทำถูกต้อง” และ“ ทำเร็วที่สุด” ในการทำงานประจำวันของคุณอย่างไร? [ปิด]
ฉันพบว่าตัวเองครุ่นคิดกับคำถามนี้เป็นครั้งคราวอีกครั้งและอีกครั้ง ฉันต้องการทำสิ่งที่ถูกต้องในการเขียนโค้ดที่สะอาดเข้าใจและถูกต้องซึ่งง่ายต่อการบำรุงรักษา อย่างไรก็ตามสิ่งที่ฉันทำคือการเขียนแพทช์ลงบนแพทช์ เพียงเพราะไม่มีเวลาลูกค้ากำลังรอข้อผิดพลาดควรได้รับการแก้ไขในชั่วข้ามคืน บริษัท กำลังสูญเสียเงินในปัญหานี้ผู้จัดการก็กดยาก ฯลฯ ฉันรู้ดีว่าในระยะยาวฉันจะเสียเวลามากขึ้นในการแก้ไข แต่เมื่อถึงเวลาทำงานหลายเดือนไม่มีใครใส่ใจ ในฐานะที่เป็นหนึ่งในผู้จัดการของฉันเคยพูดว่า: "เราไม่ทราบว่าจะมีในระยะยาวถ้าเราไม่แก้ไขในตอนนี้" ฉันแน่ใจว่าฉันไม่ใช่คนเดียวที่ถูกขังอยู่ในวัฏจักรทางเลือกที่เหมาะสมที่สุด ดังนั้นเพื่อนโปรแกรมเมอร์ของฉันจะรับมือกับสิ่งนี้ได้อย่างไร ปรับปรุง: ขอบคุณทุกท่านสำหรับการสนทนาที่น่าสนใจนี้ เป็นเรื่องน่าเศร้าที่ผู้คนจำนวนมากต้องเลือกประจำวันระหว่างปริมาณและคุณภาพของรหัส ยังมีอีกหลายคนที่คิดว่าเป็นไปได้ที่จะชนะการต่อสู้ครั้งนี้ดังนั้นขอขอบคุณทุกท่านที่ให้กำลังใจ

22
ติดอยู่เนื่องจาก“ รู้มากเกินไป” [ปิด]
บันทึกการสนทนาเพิ่มเติมได้ที่http://news.ycombinator.com/item?id=4037794 ฉันมีภารกิจการพัฒนาที่ค่อนข้างง่าย แต่ทุกครั้งที่ฉันพยายามโจมตีมันฉันจะวนเวียนอยู่ในความคิดลึก ๆ - มันจะขยายอนาคตได้อย่างไรลูกค้ารุ่นที่สองจะต้องได้อย่างไรมันจะส่งผลกระทบอย่างไรกับ "ไม่ทำงาน" แง่มุมต่างๆ (เช่นประสิทธิภาพการอนุญาต ... ) สถาปนิกจะอนุญาตให้เปลี่ยนแปลงได้อย่างไร ... ฉันจำตัวเองได้ไม่นานก่อนหน้านี้อายุน้อยกว่าและอาจจะกระตือรือร้นมากกว่าเดิม "ฉัน" แล้วฉันก็ไม่ได้คิดอะไรเกี่ยวกับสิ่งนั้น - เขาจะได้ไปข้างหน้าและเขียนอะไรแล้วเขียนใหม่แล้วเขียนมันอีกครั้ง (และอีกครั้ง ... ) วันนี้ "ฉัน" ลังเลมากขึ้นระวังตัวมากขึ้น วันนี้ฉันพบว่ามันง่ายกว่ามากที่จะนั่งและวางแผนและสั่งสอนคนอื่นเกี่ยวกับวิธีการทำสิ่งต่าง ๆ มากกว่าที่จะไปข้างหน้าและทำมันเอง - ไม่ใช่เพราะฉันไม่ชอบโค้ด - ตรงกันข้ามฉันชอบ! - แต่เพราะทุกครั้งที่ฉันนั่งที่แป้นพิมพ์ฉันก็ลงเอยในที่ที่น่ารำคาญเช่นเดียวกัน มันผิดหรือเปล่า? นี่เป็นวิวัฒนาการตามธรรมชาติหรือไม่หรือว่าฉันขับรถเข้าไปในรูต? การเปิดเผยที่เป็นธรรม - ในอดีตฉันเป็นนักพัฒนาวันนี้ตำแหน่งงานของฉันคือ "สถาปนิกระบบ" ขอให้โชคดีในการค้นหาความหมาย - แต่นั่นคือชื่อ ว้าว. ฉันไม่ได้คาดหวังว่าคำถามนี้จะสร้างคำตอบมากมาย ฉันจะพยายามสรุปมัน เหตุผล: การวิเคราะห์อัมพาต / เหนือวิศวกรรม / …

2
Git branching และการติดแท็กแนวทางปฏิบัติที่ดีที่สุด
ฉันกำลังเรียนรู้ที่จะใช้ Git โดยการอ่านPro Git ตอนนี้ฉันกำลังเรียนรู้เกี่ยวกับการแตกแขนงและแท็ก คำถามของฉันคือเมื่อฉันควรใช้สาขาและเมื่อฉันควรใช้แท็ก? ตัวอย่างเช่นสมมติว่าฉันสร้างสาขาสำหรับเวอร์ชัน 1.1 ของโครงการ เมื่อฉันเสร็จสิ้นและปล่อยรุ่นนี้ฉันควรออกจากสาขาเพื่อทำเครื่องหมายรุ่นที่วางจำหน่ายหรือไม่ หรือฉันควรเพิ่มแท็ก หากฉันเพิ่มแท็กฉันควรลบสาขาเวอร์ชัน (สมมติว่ามันรวมเข้ากับมาสเตอร์หรือสาขาอื่น ๆ )

17
ฉันจะรู้ได้อย่างไรว่าวิธีการของฉันควรใช้ซ้ำได้อย่างไร [ปิด]
ฉันกำลังคิดถึงธุรกิจของตัวเองที่บ้านและภรรยาของฉันมาหาฉันและพูดว่า ที่รัก .. คุณสามารถพิมพ์ Day Light Saving ทั่วโลกสำหรับปี 2018 ในคอนโซลได้หรือไม่? ฉันต้องตรวจสอบบางอย่าง และฉันก็มีความสุขสุด ๆ เพราะนั่นคือสิ่งที่ฉันรอมาตลอดทั้งชีวิตกับประสบการณ์ Java ของฉันและเกิดขึ้นกับ: import java.time.*; import java.util.Set; class App { void dayLightSavings() { final Set<String> availableZoneIds = ZoneId.getAvailableZoneIds(); availableZoneIds.forEach( zoneId -> { LocalDateTime dateTime = LocalDateTime.of( LocalDate.of(2018, 1, 1), LocalTime.of(0, 0, 0) ); ZonedDateTime now = ZonedDateTime.of(dateTime, …

11
การเพิ่มความซับซ้อนของระบบส่งผลต่อโปรแกรมเมอร์รุ่นต่อ ๆ ไปอย่างไร?
ในฐานะโปรแกรมเมอร์ "ใหม่" (ฉันเขียนบรรทัดของรหัสในปี 2009 เป็นครั้งแรก) ฉันสังเกตว่ามันค่อนข้างง่ายที่จะสร้างโปรแกรมที่แสดงองค์ประกอบที่ค่อนข้างซับซ้อนในปัจจุบันด้วยสิ่งต่าง ๆ เช่น. NET Framework การสร้างส่วนต่อประสานที่มองเห็นหรือการเรียงลำดับรายการสามารถทำได้ด้วยคำสั่งน้อยมากในขณะนี้ เมื่อฉันเรียนรู้ที่จะเขียนโปรแกรมฉันก็ได้เรียนรู้ทฤษฎีการคำนวณแบบขนาน สิ่งต่าง ๆ เช่นการเรียงลำดับอัลกอริธึมหลักการทำงานร่วมกันของฮาร์ดแวร์พีชคณิตแบบบูลและเครื่องจักรสถานะ จำกัด แต่ฉันสังเกตว่าถ้าฉันต้องการทดสอบหลักพื้นฐานบางอย่างที่ฉันได้เรียนรู้ในทางทฤษฎีมันเป็นเรื่องยากมากที่จะเริ่มต้นเพราะเทคโนโลยีมากมายถูกบดบังด้วยสิ่งต่าง ๆ เช่นห้องสมุดกรอบและระบบปฏิบัติการ การสร้างโปรแกรมที่ใช้หน่วยความจำนั้นมีความจำเป็น 40/50 ปีที่แล้วเพราะมีหน่วยความจำไม่เพียงพอและมีราคาแพงดังนั้นโปรแกรมเมอร์ส่วนใหญ่จึงให้ความสำคัญกับชนิดข้อมูลและวิธีการจัดการตัวประมวลผล ทุกวันนี้บางคนอาจโต้แย้งว่าเนื่องจากกำลังการประมวลผลที่เพิ่มขึ้นและหน่วยความจำที่มีอยู่ความกังวลเหล่านั้นจึงไม่ใช่เรื่องสำคัญ คำถามของฉันคือถ้าโปรแกรมเมอร์เก่าเห็นนวัตกรรมเช่นนี้เป็นสวรรค์หรือเลเยอร์เพิ่มเติมที่เป็นนามธรรมผ่านและทำไมพวกเขาอาจคิดอย่างนั้น? และโปรแกรมเมอร์ที่อายุน้อยกว่าจะได้รับประโยชน์จากการเรียนรู้การเขียนโปรแกรมระดับต่ำมากขึ้นก่อนที่จะสำรวจอาณาจักรของห้องสมุดที่กว้างขวางหรือไม่? ถ้าเป็นเช่นนั้นทำไม

15
ค่าคงที่แบบอักขระเดียวดีกว่าตัวอักษรจริงหรือไม่
เมื่อเร็ว ๆ นี้ฉันได้พบกับชั้นเรียนที่ให้ตัวละครทุกตัวเป็นค่าคงที่ ทุกอย่างจากการCOMMA BRACKET_OPENสงสัยว่าสิ่งนี้จำเป็นหรือไม่ ฉันอ่าน"บทความ"ซึ่งแสดงว่าอาจเป็นประโยชน์ในการดึงตัวอักษรเดียวให้อยู่ในค่าคงที่ ดังนั้นฉันสงสัย ความสนใจหลักของการใช้ค่าคงที่คือลดการบำรุงรักษาเมื่อจำเป็นต้องมีการเปลี่ยนแปลง แต่เมื่อไหร่เราจะเริ่มใช้สัญลักษณ์ที่แตกต่างจาก ',' เพื่อเป็นตัวแทนของเครื่องหมายจุลภาค? เหตุผลเดียวที่ฉันเห็นการใช้ค่าคงที่แทนตัวอักษรคือการทำให้โค้ดอ่านง่ายขึ้น แต่เป็นcity + CharacterClass.COMMA + stateตัวอย่างที่อ่านได้ง่ายกว่าจริงcity + ',' + stateหรือ สำหรับฉันข้อเสียมากกว่าข้อดีส่วนใหญ่ที่คุณแนะนำชั้นอื่นและนำเข้าอีก และฉันเชื่อในรหัสน้อยที่สุด ดังนั้นฉันสงสัยว่าฉันทามติทั่วไปอยู่ที่นี่

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