คำถามติดแท็ก language-agnostic

แท็กนี้มีไว้สำหรับคำถามที่ไม่เฉพาะกับภาษาการเขียนโปรแกรมหรือสภาพแวดล้อม

4
อัลกอริทึม / โครงสร้างข้อมูลใดที่ฉันควร "รู้จัก" และรู้จักด้วยชื่อ? [ปิด]
ฉันต้องการพิจารณาตัวเองเป็นโปรแกรมเมอร์ที่มีประสบการณ์พอสมควร ฉันเขียนโปรแกรมมานานกว่า 5 ปีแล้ว จุดอ่อนของฉันแม้ว่าจะเป็นคำศัพท์ ฉันเรียนรู้ด้วยตนเองดังนั้นในขณะที่ฉันรู้วิธีการเขียนโปรแกรมฉันไม่ทราบถึงแง่มุมที่เป็นทางการของวิทยาศาสตร์คอมพิวเตอร์ ดังนั้นอัลกอริธึมเชิงปฏิบัติ / โครงสร้างข้อมูลที่ฉันรู้จักและรู้จักด้วยชื่อคืออะไร? หมายเหตุฉันไม่ได้ขอคำแนะนำหนังสือเกี่ยวกับการใช้อัลกอริทึม ฉันไม่สนใจเกี่ยวกับการนำไปใช้ฉันแค่อยากรู้ว่าเมื่อใดอัลกอริทึม / โครงสร้างข้อมูลจะเป็นวิธีแก้ปัญหาที่ดี ฉันขอเพิ่มเติมเกี่ยวกับรายการอัลกอริทึม / โครงสร้างข้อมูลที่ฉันควร "จดจำ" เช่นฉันรู้วิธีแก้ปัญหาเช่นนี้ คุณจัดการชุดล็อกเกอร์ที่มีข้อความ 0-999 ผู้คนมาหาคุณเพื่อเช่าตู้เก็บของและจากนั้นกลับมาเพื่อส่งคืนกุญแจตู้เก็บของ คุณจะสร้างซอฟต์แวร์ชิ้นหนึ่งเพื่อจัดการกับการรู้ว่าตู้เก็บของฟรีและที่ใช้อยู่อย่างไร การแก้ปัญหาจะเป็นคิวหรือสแต็ค สิ่งที่ฉันกำลังมองหาคือสิ่งที่ "ในสถานการณ์ที่ควรใช้ B-Tree - อัลกอริทึมการค้นหาใดควรใช้ที่นี่" เป็นต้นและอาจเป็นการแนะนำอย่างรวดเร็วว่าโครงสร้างข้อมูลที่ซับซ้อนมากขึ้น (แต่ใช้กันทั่วไป) / อัลกอริทึมทำงาน ฉันลองดูรายการโครงสร้างข้อมูลและอัลกอริทึมของ Wikipedia แต่ฉันคิดว่ามันเกินความจริงเล็กน้อย ดังนั้นฉันจึงมองหาสิ่งสำคัญที่ฉันควรรู้

16
ทำไมต้องใช้! boolean_variable มากกว่า boolean_variable == false
ความคิดเห็นเกี่ยวกับคำถามนี้: การตรวจสอบว่าวิธีการส่งกลับเท็จ: กำหนดผลลัพธ์ให้กับตัวแปรชั่วคราวหรือทำให้วิธีการภาวนาโดยตรงในเงื่อนไข? บอกว่าคุณควรใช้!booleanแทนboolean == falseเมื่อทดสอบเงื่อนไข ทำไม? สำหรับฉันนั้นboolean == falseเป็นธรรมชาติมากขึ้นในภาษาอังกฤษและชัดเจนยิ่งขึ้น ฉันขอโทษถ้านี่เป็นเพียงเรื่องของสไตล์ แต่ฉันสงสัยว่ามีเหตุผลอื่นอีก!booleanหรือไม่สำหรับการตั้งค่านี้


17
วิธีการจัดการกับความคิดเห็นซ้ำซากในความคิดเห็น? [ปิด]
บางครั้งฉันพบว่าตัวเองอยู่ในสถานการณ์ที่ส่วนหนึ่งของรหัสที่ฉันเขียนคือ (หรือดูเหมือนว่าจะเป็น ) ดังนั้นตัวเองชัดเจนว่าชื่อของมันจะถูกทำซ้ำโดยทั่วไปเป็นความคิดเห็น: class Example { /// <summary> /// The location of the update. /// </summary> public Uri UpdateLocation { get; set; }; } (ตัวอย่าง C # แต่โปรดอ้างอิงคำถามว่าเป็นผู้ไม่เชื่อเรื่องภาษา) ความคิดเห็นเช่นนั้นไร้ประโยชน์ ผมทำอะไรผิดหรือเปล่า? มันเป็นทางเลือกของชื่อที่ผิดหรือเปล่า? ฉันจะแสดงความคิดเห็นชิ้นส่วนเช่นนี้ดีกว่าได้อย่างไร ฉันควรจะข้ามความคิดเห็นสำหรับสิ่งเช่นนี้หรือไม่?

4
ฉันควรทำอย่างไรเพื่อไม่เชื่อเรื่องภาษา?
ตอนนี้ฉันทำงานกับ asp.net และ C # ฉันได้ทำงานที่น่าพอใจใน Java เช่นกัน ฉันกำลังวางแผนอาชีพของฉันในแบบที่ฉันควรจะเป็นผู้ไม่เชื่อเรื่องภาษาสักวันหนึ่ง ฉันต้องเรียนรู้อะไรบ้าง กระบวนทัศน์แรกของ OOP คือพูดถึงการออกแบบระดับ มีคนอื่นอีกไหม?

12
เคยมีเหตุผลในการทำงานของวัตถุทั้งหมดในนวกรรมิกหรือไม่?
ให้ฉันนำหน้าสิ่งนี้โดยบอกว่านี่ไม่ใช่รหัสของฉันหรือรหัสเพื่อนร่วมงานของฉัน หลายปีที่ผ่านมาเมื่อ บริษัท ของเรามีขนาดเล็กลงเรามีโครงการบางอย่างที่เราต้องการทำโดยที่เราไม่มีกำลังการผลิต ตอนนี้ฉันไม่มีอะไรกับผู้รับเหมาช่วงหรือผู้รับเหมาทั่วไป แต่ codebase ที่พวกเขาผลิตนั้นเป็นจำนวนมากของ WTF ที่ถูกกล่าวว่ามันทำงาน (ส่วนใหญ่) ดังนั้นฉันคิดว่ามันอยู่ใน 10 อันดับแรกของโครงการเอาต์ซอร์ซที่ฉันเคยเห็น ในขณะที่ บริษัท ของเราเติบโตขึ้นเราได้พยายามพัฒนาบ้านให้มากขึ้น โปรเจ็กต์นี้ลงบนตักของฉันดังนั้นฉันได้ไปทำความสะอาดเพิ่มการทดสอบ ฯลฯ ฯลฯ มีรูปแบบเดียวที่ฉันเห็นซ้ำหลายครั้งและดูเหมือนว่าน่ากลัวอย่างมากที่ฉันสงสัยว่าอาจจะมีเหตุผลและฉันแค่ไม่เห็นมัน รูปแบบเป็นวัตถุที่ไม่มีวิธีการสาธารณะหรือสมาชิกเพียงแค่ตัวสร้างสาธารณะที่ทำงานของวัตถุทั้งหมด ตัวอย่างเช่น (รหัสอยู่ใน Java หากมีความสำคัญ แต่ฉันหวังว่านี่จะเป็นคำถามทั่วไปมากขึ้น): public class Foo { private int bar; private String baz; public Foo(File f) { execute(f); } private void execute(File f) { // FTP …

3
อะไรคือข้อได้เปรียบของ OOP ที่ใช้ต้นแบบมากกว่า OOP แบบอิงคลาส?
เมื่อฉันเริ่มเขียนโปรแกรมจาวาสคริปต์หลังจากจัดการกับ OOP เป็นหลักในบริบทของภาษาที่ใช้ในคลาสฉันก็สับสนว่าทำไม OOP ที่ใช้ต้นแบบจะเป็นที่ต้องการของ OOP แบบคลาส อะไรคือข้อได้เปรียบเชิงโครงสร้างของการใช้ OOP ที่อิงต้นแบบหากมี? (เช่นเราคาดหวังให้หน่วยความจำเร็วขึ้นหรือน้อยลงในบางแอปพลิเคชันหรือไม่) ข้อดีของมุมมองของนักเขียนคืออะไร? (เช่นการรหัสแอปพลิเคชันบางอย่างง่ายขึ้นหรือขยายรหัสของผู้อื่นโดยใช้การสร้างต้นแบบหรือไม่) โปรดอย่ามองคำถามนี้เป็นคำถามเกี่ยวกับ Javascript โดยเฉพาะ (ซึ่งมีข้อบกพร่องมากมายในช่วงหลายปีที่ไม่เกี่ยวข้องกับการทำต้นแบบ) โปรดดูในบริบทของข้อได้เปรียบเชิงทฤษฎีของการสร้างต้นแบบกับคลาส ขอขอบคุณ.

9
ทำไมมันเป็นไปไม่ได้ที่จะสร้างตัวเลขสุ่มอย่างแท้จริง?
ฉันพยายามแก้ปัญหางานอดิเรกที่ต้องสร้างตัวเลขสุ่มนับล้าน แต่ฉันก็รู้ได้อย่างรวดเร็วว่ามันยากที่จะทำให้มันไม่เหมือนใคร ฉันหยิบคู่มือการออกแบบอัลกอริทึมขึ้นมาเพื่ออ่านเกี่ยวกับการสร้างตัวเลขสุ่ม มีย่อหน้าต่อไปนี้ที่ฉันไม่สามารถเข้าใจได้อย่างเต็มที่ น่าเสียดายที่การสร้างตัวเลขสุ่มดูง่ายกว่าที่เป็นจริงมาก อันที่จริงแล้วมันเป็นไปไม่ได้ที่จะไม่สามารถสร้างตัวเลขสุ่มอย่างแท้จริงบนอุปกรณ์ที่กำหนดค่าได้ Von Neumann [Neu63] กล่าวอย่างดีที่สุด:“ ใครก็ตามที่คิดว่าวิธีการเกี่ยวกับเลขคณิตในการสร้างตัวเลขสุ่มนั้นแน่นอนว่าอยู่ในสภาพบาป” สิ่งที่ดีที่สุดที่เราหวังคือตัวเลขสุ่มหลอกลำธารที่ปรากฏเป็น ถ้าพวกเขาถูกสร้างแบบสุ่ม ทำไมจึงเป็นไปไม่ได้ที่จะสร้างตัวเลขสุ่มอย่างแท้จริงในอุปกรณ์กำหนดค่าใด ๆ ประโยคนี้หมายความว่าอย่างไร

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

8
จำนวนข้อผิดพลาดเฉลี่ยต่อ loc นั้นเท่ากันสำหรับภาษาการเขียนโปรแกรมที่แตกต่างกันหรือไม่? [ปิด]
ฉันได้รับแจ้งว่าจำนวนข้อบกพร่อง / ข้อบกพร่องโดยเฉลี่ยต่อบรรทัดของรหัสคือ "คงที่" สำหรับภาษาการเขียนโปรแกรมที่แตกต่างกัน Ruby ของ KLOC 10 ตัวจะมีจำนวนบั๊กเท่ากับ 10 KLOC ของ c ++ อาร์กิวเมนต์มักจะใช้เพื่อส่งเสริมการใช้ภาษาที่แสดงออก (คิดว่าหลาม / ruby ​​มากกว่า c ++ / แอสเซมบลี) เนื่องจากจำนวนบรรทัดเพื่ออธิบายการทำงานเดียวกันจะมีขนาดเล็กลง ไม่มีใครทราบว่าข้อเรียกร้องนี้มาจากไหน ภาษาระดับสูงขึ้นนำไปสู่ข้อบกพร่องน้อยลงหรือไม่

15
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะตั้งชื่อตัวแปรที่ไม่ได้ใช้ด้วยการขีดเส้นใต้เดี่ยว?
_บ่อยครั้งเมื่อไวยากรณ์ของภาษาต้องการให้ฉันชื่อตัวแปรที่ไม่เคยใช้ผมจะตั้งชื่อมันว่า ในใจของฉันมันช่วยลดความยุ่งเหยิงและให้ฉันมุ่งเน้นไปที่ตัวแปรที่มีความหมายในโค้ด ฉันคิดว่ามันจะไม่เป็นการรบกวนเพื่อสร้างผล "นอกสายตาจากใจ" ตัวอย่างทั่วไปที่ฉันทำคือการตั้งชื่อแบบสอบถามย่อยใน SQL SELECT * FROM ( SELECT * FROM TableA JOIN TableB ON TableA.ColumnB = TableB.ColumnB WHERE [ColumnA] > 10 ) _ --This name is required, but never used here ORDER BY ColumnC อีกตัวอย่างหนึ่งคือตัวแปรลูปที่ไม่ได้ใช้ array = [[] for _ in range(n)] # Defines a list of …

13
เป็นการสัมภาษณ์ที่ไม่ดีหรือไม่ที่ให้ผู้สมัครเขียนการใช้ลิสต์ที่เชื่อมโยง [ปิด]
การอ่านเว็บไซต์นี้และดังนั้นฉันได้เห็นเรื่องราวการสัมภาษณ์และคำตอบมากมายที่บอกว่าผู้สมัครต้องใช้รายการที่เชื่อมโยงตั้งแต่เริ่มต้น โดยปกติแล้วนี่คือแบบฝึกหัด "gimme" สำหรับการเขียนโปรแกรมบทบาทผู้สมัครเช่นการเขียน FizzBuzz แนวคิดคือถ้าผู้สมัครไม่สามารถทำสิ่งนี้ได้พวกเขาไม่สามารถเขียนโปรแกรมและควรถูกปฏิเสธเกือบจะทันที อย่างไรก็ตามฉันไม่สามารถช่วยได้ แต่คิดว่านี่อาจเป็นวิธีปฏิบัติที่ไม่ดีด้วยเหตุผลดังต่อไปนี้: ภาษาระดับสูงที่ทันสมัยเช่น C # และ Python ใช้รายการอย่างกว้างขวาง การเขียนออบเจ็กต์ลิสต์ของคุณเองจะต้องใช้ภายใต้สถานการณ์ที่ผิดปกติเท่านั้นและอาจไม่เหมาะสม ภาษาระดับต่ำกว่าเช่น C ++ มีไลบรารีมาตรฐานพร้อมตัววนซ้ำ / รายการคอนเทนเนอร์และวัตถุ ในแง่ของสองประเด็นแรกนักเขียนโค้ดสามารถใช้เวลาหลายปีโดยไม่ต้องคิดถึงการใช้รายการ (เชื่อมโยงเชื่อมโยงซ้ำซ้อน ฯลฯ ) ด้วยตนเอง บางคนอาจไม่เห็นสิ่งเหล่านี้มาตั้งแต่สมัยเรียน พลังการคำนวณยังไม่ได้เป็นปัจจัยเมื่อหลายปีก่อนดังนั้นประสิทธิภาพผ่านพอยน์เตอร์จึงไม่ใช่ปัญหาที่เคยเป็น (โดยทั่วไป) การค้นหาเว็บอย่างง่ายของบางอย่างเช่น "รายการลิสต์ที่เชื่อมโยง" จะแสดงตัวอย่างโค้ดจำนวนมากที่เพิ่งถูกจดจำและทะเลาะวิวาทกันไม่ได้บ่งชี้ความสามารถที่แท้จริงของผู้สมัคร ฉันควรจะบอกว่าการใช้รายการที่เชื่อมโยงเพื่อนำไปสู่คำถาม / การอภิปรายปลายเปิดของผู้สมัครที่มีความสามารถในการแก้ปัญหา / การคิดเชิงวิพากษ์นั้นน่าจะเป็นการสัมภาษณ์ที่ดี ไม่ว่าผู้สัมภาษณ์คนใดจะเห็นว่าผู้สมัครเป็นอย่างไรและพวกเขาคิดว่ามีประโยชน์อย่างไร ฉันคิดว่าวิธีการแบบไบนารีนี้ของ "ไม่มีรหัสรายการที่เชื่อมโยงไม่มีงาน" สำหรับโปรแกรมเมอร์ที่ทำงานบนเดสก์ท็อปหรือโปรแกรมประยุกต์บนเว็บนั้นล้าสมัยไปแล้ว มันอาจเป็นอันตรายได้ ผู้สมัครที่จำไม่ได้ว่าจะทำงานร่วมกับหัวหน้ารายการอย่างถูกต้องได้อย่างไรอาจเป็น coder และเพื่อนร่วมงานที่ยอดเยี่ยมได้ คิด? แก้ไข : มีความคิดเห็นจำนวนมาก (ดี) …

7
มันเป็นสัญญาณที่ไม่ดีที่ฉันมักจะออกแบบใหม่ในขณะที่ฉันพัฒนาโครงการหรือไม่?
เมื่อฉันเริ่มเขียนโปรแกรมครั้งแรกฉันคิดว่าวันหนึ่งฉันจะไปถึงจุดที่ฉันจะเริ่มโครงการด้วยการนั่งลงและร่างแผนภาพ UML ของชั้นเรียนทั้งหมดจากนั้นค่อนข้างติดอยู่กับเรื่องนั้น ตอนนี้ฉันได้เขียนโปรแกรมมาสองสามปีแล้วและมันก็ไม่ได้เป็นเช่นนั้น เมื่อฉันทำโครงการฉันมักจะพูดว่า "เฮ้ฉันต้องการเรียนเพื่อทำ_ _. ฉันไม่เคยคิดถึงเรื่องนี้มาก่อนเลย" "เดี๋ยวก่อนฟังก์ชั่นนี้ควรอยู่ในชั้นเรียนนั้นแทนที่จะเป็นแบบนี้ฉันจะย้ายมันไป" "นี่ควรจะเป็นสองคลาสแทนหนึ่งฉันจะแยกมันออก" "ฉันควรทำให้คลาสแบบสแตนด์อโลนทั้งสามนี้สืบทอดมาจากคลาสนามธรรม" Etcetera, Etcetera มันเป็นสัญญาณที่ไม่ดีที่ฉันมักจะออกแบบใหม่เช่นนี้เมื่อฉันไปตาม? นี่หมายความว่าฉันเป็นโปรแกรมเมอร์ที่ยากจนหรือเป็นเรื่องปกติ

7
ข้อโต้แย้งต่อต้านการปราบปรามข้อผิดพลาด
ฉันพบโค้ดบางส่วนในโครงการของเรา: SomeClass QueryServer(string args) { try { return SomeClass.Parse(_server.Query(args)); } catch (Exception) { return null; } } เท่าที่ฉันเข้าใจการระงับข้อผิดพลาดเช่นนี้เป็นการปฏิบัติที่ไม่ดีเนื่องจากเป็นการทำลายข้อมูลที่เป็นประโยชน์จากข้อยกเว้นของเซิร์ฟเวอร์ดั้งเดิมและทำให้รหัสดำเนินการต่อเมื่อควรยุติ เมื่อใดที่เหมาะสมที่จะระงับข้อผิดพลาดทั้งหมดเช่นนี้

16
เหตุใดจึงต้องใช้หมายเลขฐานอื่น ๆ เมื่อตั้งโปรแกรม
เพื่อนร่วมงานของฉันและฉันกำลังคิดในใจของเราที่จะหาสาเหตุที่ทุกคนจะออกไปทางหมายเลขโปรแกรมในฐานอื่นที่ไม่ใช่ฐาน 10 ฉันแนะนำว่าบางทีคุณสามารถเพิ่มประสิทธิภาพสมการอีกต่อไปโดยการใส่ตัวแปรในฐานที่ถูกต้องที่คุณกำลังทำงานด้วย (ตัวอย่างเช่นถ้าคุณมีเพียงชุด 5 ของสิ่งที่ไม่มีเศษคุณสามารถใช้ฐาน 5) แต่ฉันไม่แน่ใจ ถ้ามันเป็นเรื่องจริง ความคิดใด ๆ

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