วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

12
วิธีการมากไปกว่าน้ำตาล syntactic? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา วิธีการบรรทุกเกินพิกัดชนิดของความหลากหลาย? สำหรับฉันดูเหมือนว่าการแยกความแตกต่างของวิธีการที่มีชื่อเดียวกันและพารามิเตอร์ที่แตกต่างกัน ดังนั้นstuff(Thing t)และstuff(Thing t, int n)เป็นวิธีการที่แตกต่างกันอย่างสิ้นเชิงเท่าที่รวบรวมและรันไทม์มีความกังวล มันสร้างภาพลวงตาบนฝั่งของผู้โทรว่ามันเป็นวิธีเดียวกันกับที่ทำหน้าที่แตกต่างกันในวัตถุชนิดต่าง ๆ - polymorphism แต่นั่นเป็นเพียงภาพลวงตาเพราะจริงstuff(Thing t)และstuff(Thing t, int n)วิธีการที่แตกต่างกันอย่างสิ้นเชิง วิธีการมากไปกว่าน้ำตาล syntactic? ฉันพลาดอะไรไปรึเปล่า? ความหมายทั่วไปสำหรับน้ำตาลประโยคคือว่ามันเป็นท้องถิ่นอย่างหมดจด ความหมายการเปลี่ยนชิ้นส่วนของรหัสให้เทียบเท่า 'หวาน' หรือในทางกลับกันเกี่ยวข้องกับการเปลี่ยนแปลงในท้องถิ่นที่ไม่ส่งผลกระทบต่อโครงสร้างโดยรวมของโปรแกรม และฉันคิดว่าวิธีการบรรทุกเกินพิกัดเหมาะสมกับเกณฑ์นี้อย่างแม่นยำ ลองดูตัวอย่างเพื่อสาธิต: พิจารณาชั้นเรียน: class Reader { public String read(Book b){ // .. translate the book to text } public String …

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

12
แก้ไขข้อคิดเห็นเพื่อใส่อาร์กิวเมนต์ของฟังก์ชันบูลีนที่เป็น“ false” หรือไม่
จากโครงการโอเพนซอร์สบางโครงการฉันรวบรวมสไตล์การเข้ารหัสต่อไปนี้ void someFunction(bool forget); void ourFunction() { someFunction(false /* forget */); } ฉันมีข้อสงสัยเสมอเกี่ยวกับความfalseหมายของที่นี่ มันหมายถึง "ลืม" หรือ "ลืม" อ้างถึงพารามิเตอร์ที่เกี่ยวข้อง (เช่นในกรณีข้างต้น) และ "false" มีไว้เพื่อลบล้างหรือไม่ มีการใช้รูปแบบใดบ่อยที่สุดและวิธีใดดีที่สุด (หรือวิธีที่ดีกว่า) เพื่อหลีกเลี่ยงความคลุมเครือ

4
วิธีการสร้างรหัส OO ที่ดีขึ้นในแอปพลิเคชันที่ขับเคลื่อนด้วยฐานข้อมูลเชิงสัมพันธ์ซึ่งฐานข้อมูลนั้นได้รับการออกแบบไม่ดี
ฉันกำลังเขียนโปรแกรมเว็บ Java ที่ประกอบด้วยส่วนใหญ่ของหน้าคล้ายกันที่ทุกหน้ามีหลายตารางและตัวกรองที่ใช้กับตารางเหล่านั้น ข้อมูลในตารางเหล่านี้มาจากฐานข้อมูล SQL ฉันใช้ myBatis เป็น ORM ซึ่งอาจไม่ใช่ตัวเลือกที่ดีที่สุดในกรณีของฉันเนื่องจากฐานข้อมูลได้รับการออกแบบไม่ดีและ mybatis เป็นเครื่องมือที่มุ่งเน้นฐานข้อมูลมากขึ้น ฉันพบว่าฉันกำลังเขียนรหัสซ้ำกันมากมายเนื่องจากเนื่องจากการออกแบบที่ไม่ดีของฐานข้อมูลฉันต้องเขียนแบบสอบถามที่แตกต่างกันสำหรับสิ่งที่คล้ายกันเนื่องจากแบบสอบถามเหล่านั้นอาจแตกต่างกันมาก นั่นคือฉันไม่สามารถหาพารามิเตอร์ของแบบสอบถามได้อย่างง่ายดาย สิ่งนี้แพร่กระจายเข้าไปในรหัสของฉันและแทนที่จะเติมแถวในคอลัมน์ในตารางของฉันด้วยการวนรอบแบบง่ายฉันมีรหัสเช่น: ได้รับข้อมูล (p1, ... , ปี่); รับข้อมูลB (p1, ... , pi); รับข้อมูลC (p1, ... , pi); รับข้อมูลD (p1, ... , pi); ... และในไม่ช้านี้จะระเบิดเมื่อเรามีตารางที่แตกต่างกันและมีคอลัมน์ต่างกัน นอกจากนี้ยังเพิ่มความซับซ้อนให้กับความจริงที่ว่าฉันใช้ "ประตู" ซึ่งมีผลต่อการแมปวัตถุกับองค์ประกอบ html ในหน้าเว็บ ดังนั้นโค้ด Java ของฉันจึงกลายเป็นอะแดปเตอร์ระหว่างฐานข้อมูลและส่วนหน้าซึ่งทำให้ฉันสร้างการเดินสายจำนวนมากโค้ดสำเร็จรูปที่มีตรรกะบางอย่างแทรกอยู่ภายใน วิธีการแก้ปัญหาที่ถูกต้องจะห่อหุ้ม mappers ORM ด้วย extralayer …

5
วิธีที่มีประสิทธิภาพในการรักษาโครงการที่ผ่านมากับสภาพแวดล้อมการพัฒนาการทำงานของพวกเขา?
ฉันพบว่าเมื่อใดก็ตามที่ฉันต้องการดำเนินโครงการที่ผ่านมามันจะใช้เวลานานก่อนที่ฉันจะสามารถค้นหาได้และก่อนที่ฉันจะมีทุกอย่างที่ติดตั้งอีกครั้งเพื่อให้สามารถทำงานได้ ตัวอย่างเช่นฉันมีโครงการงูหลามที่ฉันสร้างขึ้นใน Linux และขึ้นอยู่กับแพคเกจซอฟต์แวร์ที่ติดตั้งได้ง่ายใน Linux แต่ฉันไม่ได้ใช้ Linux VM ที่ฉันใช้อีกต่อไป และโครงการอื่น ๆ ของฉันขึ้นอยู่กับตัวแปรอื่น ๆ เช่นการกำหนดค่าเว็บเซิร์ฟเวอร์ตัวแปร PATH, sdk, IDE, เวอร์ชั่นระบบปฏิบัติการ, อุปกรณ์ ฯลฯ มีใครบางคนมีวิธีที่มีประสิทธิภาพในการจัดการปัญหานี้หรือไม่? ณ ตอนนี้ผมได้เกี่ยวข้องเฉพาะกับการรักษาตัวเองรหัสที่มาสำรองไว้เลยว่ามันเป็นเรื่องยากที่สร้างใหม่การพัฒนาสภาพแวดล้อมการทำงานและมันก็ยังเป็นเรื่องยากที่จะให้การพัฒนาสภาพแวดล้อมการทำงานรอบเช่นกัน

3
สิทธิ์การใช้งานที่ใช้งานร่วมกันได้กับ GPL เช่น MIT สามารถใช้งานได้ในโปรแกรม GPL โดยไม่ต้องอยู่ภายใต้บทบัญญัติของลิขสิทธิ
ขณะนี้ฉันกำลังตรวจสอบความเป็นไปได้และความหมายของการเชื่อมโยงกับไลบรารี GPL สำหรับแอปพลิเคชันในบริบทเชิงพาณิชย์ จากสิ่งที่ฉันเข้าใจเกี่ยวกับ GPL ตราบใดที่มีการใช้แอปพลิเคชันภายในไม่มีข้อผูกมัดที่จะต้องปล่อยรหัสของมัน (แม้ว่าสำเนาจะถูกย้ายไปยัง บริษัท ย่อยที่มีการควบคุม) สิ่งที่ฉันไม่เข้าใจคือประเด็นต่อไปนี้จากคำถามที่พบบ่อย: หากไลบรารี่ออกภายใต้ GPL (ไม่ใช่ LGPL) นั่นหมายความว่าซอฟต์แวร์ใด ๆ ที่ใช้จะต้องอยู่ภายใต้ GPL หรือลิขสิทธิ์ที่เข้ากันได้กับ GPLหรือไม่? ใช่เพราะซอฟต์แวร์ที่ทำงานจริงรวมถึงห้องสมุด ถ้าฉันดูใบอนุญาตที่เข้ากันได้กับ GPLพวกเขาบางคน (เช่นเพิ่มประสิทธิภาพ) จะไม่บังคับให้วางจำหน่ายโค้ด การใช้มันจะสร้างสถานการณ์ที่คุณสามารถปฏิบัติตามใบอนุญาต GPL ได้โดยไม่ต้องเคารพภาระหน้าที่ในการทำให้รหัสของคุณเป็นแบบสาธารณะ (ซึ่งดูเหมือนจะไม่น่าเชื่อถือมาก) (หมายเหตุ: มีส่วนประกอบใน Adobe Photoshop ที่ได้รับอนุญาตภายใต้การเพิ่มประสิทธิภาพและฉันไม่คิดว่ามีรหัสตามที่ต้องการ) คำอธิบายที่สมเหตุสมผลที่สุดคือฉันไม่ได้ทำอะไรซักอย่าง ... คุณช่วยบอกฉันทีว่าฉันทำผิดพลาดได้ไหม?
19 licensing 

4
การจัดทำเอกสารตรรกะทางคณิตศาสตร์ในรหัส
บางครั้งถึงแม้ไม่บ่อยนักฉันก็ต้องรวมตรรกะคณิตศาสตร์ไว้ในรหัสด้วย แนวคิดที่ใช้ส่วนใหญ่จะง่ายมาก แต่โค้ดผลลัพธ์ไม่ใช่ - ตัวแปรจำนวนมากที่มีจุดประสงค์ที่ไม่ชัดเจนและการดำเนินการบางอย่างที่มีเจตนาไม่ชัดเจน ผมไม่ได้หมายความว่ารหัสไม่สามารถอ่านหรือ unmaintainable เพียงแค่ว่ามันเป็นwaaaayยากที่จะเข้าใจกว่าปัญหาทางคณิตศาสตร์ที่เกิดขึ้นจริง ฉันพยายามที่จะแสดงความคิดเห็นส่วนที่ยากที่สุดที่จะเข้าใจ แต่มีปัญหาเช่นเดียวกับในเวลาเพียงเข้ารหัสพวกเขา - ข้อความที่ไม่ได้มีการแสดงพลังของคณิตศาสตร์ ฉันกำลังมองหาวิธีที่มีประสิทธิภาพและเข้าใจได้ง่ายขึ้นในการอธิบายตรรกะที่อยู่เบื้องหลังโค้ดที่ซับซ้อนบางอย่างโดยเฉพาะอย่างยิ่งในโค้ดเอง ฉันถือว่า TeX - เขียนเอกสารและสร้างแยกต่างหากจากรหัส แต่ฉันต้องเรียนรู้ TeX และเอกสารจะไม่อยู่ในโค้ด อีกสิ่งหนึ่งที่ฉันคิดคือการถ่ายรูปสัญลักษณ์ทางคณิตศาสตร์สมการและไดอะแกรมที่เขียนบนกระดาษ / ไวท์บอร์ดและรวมไว้ใน javadoc มีวิธีที่ง่ายและชัดเจนกว่าหรือไม่? PS การให้ชื่อที่สื่อความหมาย ( timeOfFirstEventแทนt1) กับตัวแปรทำให้โค้ดมีความละเอียดมากขึ้นและอ่านได้ยากขึ้น

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

3
ทางเลือกใดในการใช้สแต็กเพื่อแสดงความหมายของการเรียกใช้ฟังก์ชัน?
เราทุกคนรู้และชื่นชอบที่การเรียกใช้ฟังก์ชันมักจะใช้งานโดยใช้ stack มีเฟรม, ที่อยู่ผู้ส่ง, พารามิเตอร์, ล็อตทั้งหมด อย่างไรก็ตามสแต็กเป็นรายละเอียดการใช้งาน: การเรียกประชุมอาจทำสิ่งต่าง ๆ (เช่น x86 fastcall ใช้ (ลงทะเบียน), MIPS และผู้ติดตามใช้หน้าต่างลงทะเบียนและอื่น ๆ ) และการเพิ่มประสิทธิภาพสามารถทำได้แม้กระทั่งสิ่งอื่น ๆ การเพิ่มประสิทธิภาพการโทรหาง .. ) แน่นอนว่าการมีคำสั่งกองซ้อนที่สะดวกในหลาย ๆ เครื่อง (VMs เช่น JVM และ CLR แต่ยังมีเครื่องจริงเช่น x86 ด้วย PUSH / POP เป็นต้น) ทำให้สะดวกในการใช้งานสำหรับการเรียกใช้ฟังก์ชั่น แต่ในบางกรณีก็เป็นไปได้ เพื่อตั้งโปรแกรมในลักษณะที่ไม่จำเป็นต้องใช้ call stack (ฉันกำลังคิดเกี่ยวกับสไตล์การส่งผ่านต่อเนื่องที่นี่หรือนักแสดงในระบบส่งข้อความ) ดังนั้นฉันเริ่มสงสัยว่า: เป็นไปได้หรือไม่ที่จะใช้ semantics call function โดยไม่มี …

3
มีขั้นตอนวิธีใดบ้างในการเลือกสีสำหรับเส้นที่พล็อตบนกราฟ
ฉันสนใจในอัลกอริทึมหรือกฎระเบียบที่ฉันสามารถนำไปใช้ในทางโปรแกรมเพื่อสร้างสี RGB หรือ HSV สำหรับโครงร่างเพื่อให้พวกเขาแตกต่างทางสายตาจากเพื่อนบ้าน ฉันรู้ว่าในการทำแผนที่มืออาชีพมีอัลกอริทึมหรือกฎระเบียบที่ทำให้แน่ใจว่าไม่มีสองประเทศติดกันบนแผนที่มีสีเดียวกัน ฉันยังสามารถนึกถึง Microsoft office Excel ในการเลือกโทนสี / เฉดสีที่ดีสำหรับลายเส้น (แดง, น้ำเงิน, ม่วง, ส้ม) นี่คือตัวอย่างของสิ่งที่ฉันกำลังพูดถึง - ฉันต้องสร้างสีสำหรับ 12 บรรทัดบนพื้นหลังสีดำ สีที่นี่ฉันฮาร์ดโค้ดด้วยมือโดยใช้รหัสสี RGB ที่ปลอดภัยสำหรับเว็บ ปัญหาเกิดขึ้นเมื่อเส้นเหล่านี้ทับกัน - ยากที่จะบอกได้ว่ามีใครดูที่สีม่วงสีม่วงเข้มหรือสีม่วงเล็กน้อย ฉันกำลังมองหาอัลกอริทึมที่ดีกว่าในการสร้างสีสำหรับพล็อตไลน์เช่นนี้ นี่คือตัวอย่างการใช้ Flot plotting library สำหรับ jQuery มันมีความต่อเนื่องของสีสำหรับกราฟ:
19 algorithms  color 

2
ไม่มีอะไรเป็นประเภทย่อยของทุกประเภทอื่น ๆ ใน Scala
ฉันกำลังเรียนหลักสูตร coursera ของ Martin Odersky เกี่ยวกับการเขียนโปรแกรมใช้งานได้กับ scala และตอนนี้ฉันได้เรียนรู้สองสิ่งที่เข้าด้วยกันไม่สมเหตุสมผล: สกาล่าไม่สนับสนุนการสืบทอดหลายแบบ Nothing เป็นประเภทย่อยของทุกประเภทอื่น ๆ ข้อความทั้งสองนี้ไม่สามารถอยู่ด้วยกันได้ดังนั้นสิ่งนี้จะทำอย่างไรกันแน่? และอะไรคือความหมายของ "ประเภทย่อยของทุก ๆ ประเภท" แก้ไข 1 ในกาลา API , Nothingถูกกำหนดให้เป็นabstract final class Nothing extends Any... ดังนั้นวิธีที่จะสามารถขยายชั้นเรียนอื่น ๆ ?

5
เป็นเรื่องปกติหรือไม่ที่ฉันไม่สามารถเก็บหัวเกินสามข้อที่กำหนดไว้ให้ฉันได้ฉันไม่สามารถเข้าใจรหัสสปาเก็ตตี้หนึ่งพันบรรทัดได้หรือไม่?
ฉันกำลังทำงานกับ codebase เก่าซึ่ง ... ไม่สมบูรณ์ในสภาพแวดล้อมที่ไม่เหมือนกัน ไม่ใช่ codebase ที่เลวร้ายที่สุดที่ฉันเคยเห็นในชีวิตของฉัน แต่ยังมีปัญหาอีกมากมาย: การทดสอบหน่วยเป็นศูนย์ วิธีการที่มีโค้ดมากกว่าพันบรรทัด ความเข้าใจผิดของหลักการเชิงวัตถุพื้นฐาน เป็นต้น มันเจ็บที่จะรักษารหัส ทุกครั้งที่ฉันต้องแก้จุดบกพร่องหนึ่งพันบรรทัดของวิธีการเขียนที่ไม่ดีพร้อมตัวแปรที่นำกลับมาใช้ใหม่ทั้งหมดฉันก็หลงทางทั้งหมด การแก้ไขหรือการปรับโครงสร้างใหม่บางครั้งฉันได้ทำบั๊กแล้วในสถานที่อื่น ๆ ของแอพพลิเคชั่น การขาดเอกสารการทดสอบหรือสถาปัตยกรรมที่สังเกตได้และรวมกับวิธีการตั้งชื่อที่ไม่ดีฉันรู้สึกว่าฉันเติมหน่วยความจำที่ใช้งานได้ทั้งหมดของฉัน ไม่มีที่เหลือสำหรับสิ่งอื่น ๆ ทั้งหมดที่ฉันต้องจำไว้เพื่อที่จะเข้าใจรหัสที่ฉันควรแก้ไข การขัดจังหวะอย่างต่อเนื่องในสถานที่ทำงานรบกวนฉันและทำให้ฉันช้าลง ฉันไม่สามารถจำงานมากกว่าสองหรือสามครั้งต่อครั้งหากไม่มีระบบติดตามบั๊กและฉันลืมงานทั้งหมดในช่วงสุดสัปดาห์ เพื่อนร่วมงานของฉันดูเหมือนจะไม่มีปัญหาที่คล้ายกัน พวกเขาจัดการเพื่อดีบักวิธีการเขียนที่ไม่ดีได้เร็วกว่าฉันมาก พวกเขาแนะนำข้อบกพร่องน้อยกว่าที่ฉันทำเมื่อเปลี่ยนรหัสฐาน ดูเหมือนว่าพวกเขาจะจำได้ดีมากสิ่งที่พวกเขาต้องการเพื่อเปลี่ยนรหัสแม้ว่ามันจะต้องอ่านรหัสหลายพันบรรทัดในยี่สิบไฟล์ที่แตกต่างกัน ดูเหมือนว่าพวกเขาจะไม่ถูกรบกวนจากอีเมลโทรศัพท์ดังผู้คนที่พูดคุยกันและคนอื่น ๆ ถามคำถามพวกเขา พวกเขาไม่ต้องการใช้ระบบติดตามบั๊กที่เรามีอยู่แล้วตั้งแต่เราใช้ TFS พวกเขาชอบที่จะจำงานที่ควรทำทุกครั้ง ทำไมสิ่งนี้ถึงเกิดขึ้น มันเป็นทักษะที่นักพัฒนาเฉพาะได้รับเมื่อทำงานกับรหัสที่เขียนไม่ดีเป็นเวลานานหรือไม่? การที่ฉันไม่มีประสบการณ์เกี่ยวกับรหัสที่ไม่ดีมีส่วนทำให้เกิดปัญหา / ความรู้สึกเหล่านี้หรือไม่? ฉันมีปัญหากับหน่วยความจำของฉันหรือไม่?

3
QT-C ++ vs Generic C ++ และ STL [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา เคยแปรงฟันบน C ++ ของฉันเมื่อเร็ว ๆ นี้บน Ubuntu QQ ฉันชอบกรอบ Qt สำหรับทุกสิ่งโดยเฉพาะอย่างยิ่งการสร้าง GUI ฉันคุ้นเคยกับมันมากเมื่อใช้ PyQt ในช่วงไม่กี่ปีที่ผ่านมา เมื่อใช้ PyQt ฉันมีปัญหาบางอย่างที่ตอนนี้เด่นชัดมากขึ้นเมื่อใช้ C ++ กับ Qt: Qt มีส่วนขยายจำนวนมากเป็น C ++ ซึ่งเป็น Qt เฉพาะ - QString เป็นเพียงตัวอย่างทั่วไปไม่พูดถึงการรวบรวมขยะอัตโนมัติ เป็นไปได้ที่จะเขียนแอปพลิเคชัน Qt โดยใช้ C ++ โดยไม่ต้องรู้อะไรมากมายเกี่ยวกับ C …
19 c++  qt  stl  gtk  pyqt4 

6
ภาษาโปรแกรมที่อนุญาตให้คุณกำหนดขีด จำกัด ใหม่สำหรับประเภทอย่างง่าย
หลายภาษาชอบC++, C#และJavaช่วยให้คุณสามารถสร้างวัตถุที่เป็นตัวแทนของประเภทง่ายๆเช่นหรือinteger floatการใช้อินเตอร์เฟสคลาสคุณสามารถแทนที่โอเปอเรเตอร์และดำเนินการตรรกะเช่นตรวจสอบว่าค่าเกินกว่ากฎธุรกิจ 100 ฉันสงสัยว่าในบางภาษาอาจมีการกำหนดกฎเหล่านี้เป็นคำอธิบายประกอบหรือคุณสมบัติของตัวแปร / คุณสมบัติ ตัวอย่างเช่นในC#คุณอาจเขียน: [Range(0,100)] public int Price { get; set; } หรือบางทีC++คุณอาจจะเขียน: int(0,100) x = 0; ฉันไม่เคยเห็นอะไรแบบนี้มาก่อน แต่ได้รับความเชื่อถือในการตรวจสอบข้อมูลก่อนการจัดเก็บ แปลกที่ฟีเจอร์นี้ไม่ได้ถูกเพิ่มลงในภาษา คุณช่วยยกตัวอย่างภาษาที่เป็นไปได้ไหม

1
จะรวมใบอนุญาตสำหรับการพึ่งพา Maven ของบุคคลที่สามได้อย่างไร
ฉันผลิตไบนารีที่แจกจ่ายได้สำหรับโครงการ Java ของฉัน ฉันปล่อยสองวิธี: Maven Central ซิปกระจายได้ในรหัส Google โครงการของฉันได้รับอนุญาตภายใต้ใบอนุญาต Apache 2.0 ฉันใช้บุคคลที่สามจำนวนน้อยซึ่งหนึ่งในนั้นเป็นลิขสิทธิ์ของ MIT ฉันเชื่อว่ามันเป็นหน้าที่ของฉันที่จะทำให้ผู้ใช้ของโครงการของฉันตระหนักถึงเนื้อหาของใบอนุญาตตามข้อความต่อไปนี้จากใบอนุญาต: ประกาศเกี่ยวกับลิขสิทธิ์ข้างต้นและประกาศการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือบางส่วนที่สำคัญของซอฟต์แวร์ ฉันจะอ้างอิงสิ่งนี้ได้ดีที่สุดภายในแหล่งที่มาของฉันและของฉันแจกจ่ายได้อย่างไร ฉันกำลังคิด: ไฟล์ต้นฉบับของฉันไม่จำเป็นต้องอ้างอิงอะไรเลย พวกเขาเพียงแค่แจ้งให้ทราบล่วงหน้า Apache 2.0 ของฉัน ฉันเพิ่มไฟล์ LICENSE.txt ที่รากของโครงการของฉันรวมถึงข้อความลิขสิทธิ์ Apache 2.0 สำหรับซิปที่แจกจ่ายได้ของฉันฉันต้องเพิ่มบางอย่างที่บ่งชี้ว่าส่วนประกอบได้รับอนุญาตจาก MIT อาจเป็นไฟล์ประกาศ? สำหรับการกระจาย Maven Central ของฉันฉันไม่จำเป็นต้องทำอะไรเลยเพราะสิ่งประดิษฐ์ของฉันเพิ่งประกาศการพึ่งพา แต่ก็ไม่ได้รวมสิ่งเหล่านั้น ดูเหมือนว่าแผนที่ถูกต้องหรือไม่ ถ้าเป็นเช่นนั้นทุกคนสามารถแนะนำวิธีการบรรลุจุดที่ 3

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