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

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

6
คำเตือนของการใช้ประเภทพื้นฐาน (เช่น int) เป็นชั้นเรียนคืออะไร?
เมื่อมีการออกแบบและ implenting ภาษาโปรแกรมเชิงวัตถุในบางจุดหนึ่งต้องให้ทางเลือกเกี่ยวกับการใช้ประเภทพื้นฐาน (เช่นint, float, doubleหรือเทียบเท่า) เป็นชั้นเรียนหรือสิ่งอื่นใด เห็นได้ชัดว่าภาษาในตระกูล C มีแนวโน้มที่จะไม่กำหนดเป็นคลาส (Java มีชนิดดั้งเดิมแบบพิเศษ C # ใช้ภาษาเหล่านี้เป็น struct ที่ไม่เปลี่ยนรูป ฯลฯ ) ฉันสามารถนึกถึงข้อได้เปรียบที่สำคัญมากเมื่อมีการใช้ประเภทพื้นฐานเป็นคลาส (ในระบบชนิดที่มีลำดับชั้นแบบรวม): ชนิดเหล่านี้อาจเป็นชนิดย่อย Liskov ที่เหมาะสมของประเภทรูต ดังนั้นเราจึงหลีกเลี่ยงความสับสนของภาษาด้วย Boxing / unboxing (ชัดเจนหรือโดยปริยาย) ประเภทของ wrapper กฎความแปรปรวนพิเศษพฤติกรรมพิเศษ ฯลฯ แน่นอนฉันสามารถเข้าใจบางส่วนว่าทำไมนักออกแบบภาษาจึงตัดสินใจเลือกวิธีการ: อินสแตนซ์ของชั้นเรียนมักจะมีค่าใช้จ่ายเชิงพื้นที่ (เนื่องจากอินสแตนซ์อาจมี vtable หรือข้อมูลเมตาอื่น ๆ ในโครงร่างหน่วยความจำ) มี (ถ้าภาษาไม่อนุญาตให้สืบทอดกับสิ่งเหล่านั้น) ประสิทธิภาพเชิงพื้นที่ (และพื้นที่เชิงพื้นที่ที่ได้รับการปรับปรุงโดยเฉพาะในอาร์เรย์ขนาดใหญ่) เป็นเหตุผลเดียวที่ว่าทำไมประเภทพื้นฐานมักไม่ได้เรียน? โดยทั่วไปฉันคิดว่าคำตอบคือใช่ แต่คอมไพเลอร์มีอัลกอริธึมการวิเคราะห์แบบ Escape และพวกเขาสามารถอนุมานได้ว่าพวกเขาสามารถ (เลือก) …

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

13
ทำไมภาษาโปรแกรมไม่จัดการปัญหาซิงโครนัส / อะซิงโครนัสโดยอัตโนมัติ?
ฉันไม่ได้พบแหล่งข้อมูลมากมายเกี่ยวกับสิ่งนี้: ฉันสงสัยว่ามันเป็นไปได้ / เป็นความคิดที่ดีที่จะสามารถเขียนโค้ดแบบอะซิงโครนัสในแบบซิงโครนัส ตัวอย่างเช่นนี่คือโค้ด JavaScript บางอย่างที่ดึงจำนวนผู้ใช้ที่เก็บในฐานข้อมูล (การดำเนินการแบบอะซิงโครนัส): getNbOfUsers(function (nbOfUsers) { console.log(nbOfUsers) }); มันคงจะดีถ้าได้เขียนอะไรแบบนี้: const nbOfUsers = getNbOfUsers(); console.log(getNbOfUsers); console.logและเพื่อให้คอมไพเลอร์โดยอัตโนมัติจะดูแลการรอคอยสำหรับการตอบสนองแล้วรัน มันจะรอให้การดำเนินการแบบอะซิงโครนัสเสร็จสมบูรณ์ก่อนที่ผลลัพธ์จะต้องถูกนำไปใช้ที่อื่น เราจะใช้สัญญาการติดต่อกลับน้อยลงอย่างมาก async / รอหรืออะไรก็ตามและไม่ต้องกังวลว่าผลลัพธ์ของการดำเนินการจะพร้อมใช้งานทันทีหรือไม่ ข้อผิดพลาดจะยังคงสามารถจัดการได้ (ได้nbOfUsersรับจำนวนเต็มหรือข้อผิดพลาด?) โดยใช้ลอง / จับหรือสิ่งที่ชอบตัวเลือกเช่นในภาษาสวิฟท์ มันเป็นไปได้? มันอาจเป็นความคิดที่น่ากลัว / ยูโทเปีย ... ฉันไม่รู้

5
ชื่อตัวแยกวิเคราะห์ประเภทนี้หรือสาเหตุที่ไม่มีอยู่
ตัวแยกวิเคราะห์แบบเดิมใช้อินพุตทั้งหมดและสร้างต้นแยกวิเคราะห์เดี่ยว ฉันกำลังมองหาอุปกรณ์ที่ใช้กระแสข้อมูลอย่างต่อเนื่องและสร้างฟอเรสต์แยกวิเคราะห์ [ แก้ไข: ดูการสนทนาในความคิดเห็นเกี่ยวกับสาเหตุที่การใช้คำนี้แบบไม่เป็นทางการ ] ไส้ของฉันบอกว่าฉันไม่สามารถเป็นคนแรกที่ต้องการ (หรือคิดว่าฉันต้องการ) ตัวแยกวิเคราะห์ แต่ฉันได้ค้นหาและใช้เวลาหลายเดือนเพื่อหาประโยชน์ ฉันรู้ว่าฉันอาจติดปัญหา XY จุดประสงค์สูงสุดของฉันคือการแยกวิเคราะห์ข้อความโดยไม่สนใจส่วนใหญ่และสร้างกระแสการแยกวิเคราะห์ต้นไม้จากส่วนที่รับรู้ ดังนั้นคำถามของฉันคือมีเงื่อนไข: ถ้ามีคลาส parsers ที่มีคุณสมบัติเหล่านี้อยู่มันเรียกว่าอะไร? และถ้าไม่ทำไมไม่ ทางเลือกคืออะไร? บางทีฉันหายไปด้วยวิธีที่ฉันสามารถทำให้ parsers ทั่วไปทำในสิ่งที่ฉันต้องการ
27 parsing 

2
StackOverflowError ใน Java หรือไม่?
ฉันเคยคิดว่ามันไม่ได้ แต่เมื่อวานนี้ฉันต้องทำ มันเป็นแอพพลิเคชั่นที่ใช้Akka (ระบบการทำงานของนักแสดงสำหรับ JVM) เพื่อประมวลผลงานอะซิงโครนัส หนึ่งในนักแสดงทำการจัดการไฟล์ PDF บางส่วนและเนื่องจากห้องสมุดมีรถบั๊กมันก็ตายด้วยStackOverflowErrorทุก ๆ คราว ด้านที่สองคือ Akka ได้รับการกำหนดค่าให้ปิดระบบนักแสดงทั้งหมดหากมีข้อผิดพลาดร้ายแรง JVM (เช่น StackOverflowError) ประเด็นที่สามคือระบบนักแสดงนี้ถูกฝังอยู่ภายในเว็บแอพ (สำหรับ WTF-ish, มรดก, เหตุผล) ดังนั้นเมื่อระบบนักแสดงปิดตัวลงแอปพลิเคชันเว็บจะไม่ ผลกระทบสุทธิคือในStackOverflowErrorแอปพลิเคชันการประมวลผลงานของเรากลายเป็นเพียงเว็บแอปที่ว่างเปล่า การแก้ไขอย่างรวดเร็วฉันต้องจับStackOverflowErrorการโยนเพื่อให้กลุ่มเธรดของระบบนักแสดงไม่ฉีกขาด นี่ทำให้ฉันคิดว่าบางทีมันก็โอเคที่จะจับข้อผิดพลาดโดยเฉพาะอย่างยิ่งในบริบทเช่นนี้? เมื่อใดที่มีเธรดพูลกำลังประมวลผลงานตามอำเภอใจ? ซึ่งแตกต่างจากOutOfMemoryErrorฉันไม่สามารถจินตนาการว่าStackOverflowErrorสามารถออกจากโปรแกรมที่อยู่ในสถานะที่ไม่สอดคล้องกัน สแต็กจะถูกล้างหลังจากข้อผิดพลาดดังกล่าวดังนั้นการคำนวณจึงสามารถดำเนินต่อได้ตามปกติ แต่บางทีฉันอาจพลาดสิ่งสำคัญไป นอกจากนี้ขอให้สังเกตว่าฉันทั้งหมดเพื่อแก้ไขข้อผิดพลาดในสถานที่แรก (ตามความเป็นจริงฉันได้แก้ไข SOE ในแอพเดียวกันนี้เมื่อไม่กี่วันที่ผ่านมา) แต่ฉันไม่รู้จริง ๆ ว่าเมื่อใด สถานการณ์แบบนี้อาจเกิดขึ้นได้ เหตุใดจึงเป็นการดีกว่าที่จะเริ่มกระบวนการ JVM ใหม่แทนการจับStackOverflowErrorทำเครื่องหมายว่างานนั้นล้มเหลวและดำเนินธุรกิจของฉันต่อไป มีเหตุผลที่น่าสนใจไหมที่จะไม่ใช้ SOE? ยกเว้น "แนวปฏิบัติที่ดีที่สุด" ซึ่งเป็นคำที่คลุมเครือซึ่งไม่ได้บอกอะไรเลย

2
โปรแกรมเมอร์ควรหาข้อมูลจำเพาะอะไรในการซื้อคอมพิวเตอร์? หรือฉันควรซื้อคอมพิวเตอร์แบบใด [ปิด]
ฉันต้องการซื้อคอมพิวเตอร์เครื่องใหม่ที่ออกแบบมาเป็นพิเศษสำหรับการเขียนโปรแกรม ฉันต้องการสร้างมันเองสำหรับประสบการณ์การเรียนรู้ แต่ยินดีที่จะซื้อมันทำเช่นกัน โดยทั่วไปฉันได้ดาวน์โหลดไฟล์จำนวนมากที่อุทิศให้กับการเขียนโปรแกรมที่มีขนาดใหญ่จนก) คอมพิวเตอร์ของฉันใกล้ความจุและ b) คอมพิวเตอร์อายุ 4 ปีของฉันช้ามาก โดยเฉพาะฉันเป็นฐานข้อมูล (Oracle / PostGreSQL, Mongo, Hadoop) และ java แต่รักการเรียนรู้ภาษาที่เป็นไปได้ทั้งหมด

7
เหตุใดจึงต้องใช้ "การจัดการ" แบบทึบซึ่งต้องใช้การคัดเลือกใน Public API แทนที่จะเป็นตัวชี้ struct
ฉันกำลังประเมินห้องสมุดซึ่งปัจจุบัน API สาธารณะมีลักษณะเช่นนี้: libengine.h /* Handle, used for all APIs */ typedef size_t enh; /* Create new engine instance; result returned in handle */ int en_open(int mode, enh *handle); /* Start an engine */ int en_start(enh handle); /* Add a new hook to the engine; hook handle returned in h2 …

2
ASM.js คืออะไรและมีความหมายสำหรับทุกคนอย่างไร
ฉันเริ่มที่จะคำรามได้ยินเกี่ยวกับโครงการนี้เรียกว่าASM.js ปัจจุบันเว็บไซต์ของพวกเขาน่ากลัวและสับสน นี่คือสิ่งที่ฉันรู้จากการวิจัยของฉันบนเว็บ เป็นชุดย่อยของ JavaScript ที่สามารถปรับให้เหมาะสมอย่างมาก ฉันเดาเพราะมันหลีกเลี่ยงส่วนที่มีพลังมากขึ้นของภาษา ประสิทธิภาพของโค้ดที่คอมไพล์ไปยัง ASM.js จะทำงานที่ความเร็วประมาณครึ่งหนึ่งของ C (ไม่ใช่แสง) จุดประสงค์สำหรับผู้รวบรวมเพื่อสร้างภาษาเป้าหมาย ASM.js Firefox กำลังจะจัดส่งพร้อมกับการเพิ่มประสิทธิภาพ ASM.js อบใน ทีมงาน Mozilla และ Unreal นำพาUnreal Engine ไปยังเว็บด้วยมันและทำงานในรูปแบบของFirefoxด้วยความเร็วใกล้เคียง ดูเหมือนจะไม่มีข้อมูลที่เป็นรูปธรรมใด ๆ บนเว็บเกี่ยวกับสิ่งที่เป็นจริงหรือมีประโยชน์หรือจุดประสงค์สุดท้าย เป็นเพราะฉันสามารถรวบรวมฐานรหัสฝั่งเซิร์ฟเวอร์ของฉันและเรียกใช้ในเบราว์เซอร์ที่ความเร็วใกล้เคียง สิ่งที่เป็นประโยชน์สำหรับนักพัฒนา?

8
ข้อเสียของผู้จัดการฝ่ายพัฒนาในฐานะ Scrum Masters คืออะไร?
เป็นที่ตกลงกันโดยทั่วไปว่าผู้จัดการทีมไม่ควรทะเลาะกันอย่างหนัก แต่ฉันพยายามดิ้นรนเพื่อดูว่าทำไม สำหรับบริบทฉันเป็นผู้จัดการการพัฒนาแอปพลิเคชันที่มี 4 devs ในทีมการต่อสู้ ฉันมาจากภูมิหลังของ Scrum Master และได้แนะนำการต่อสู้กับองค์กร ฉันได้สร้างทีมตั้งแต่เริ่มต้นและทำให้ชัดเจนว่าทุกอย่างที่ฉันทำคือการอำนวยความสะดวกให้กับทีมและพวกเขาตัดสินใจ ในฐานะที่เป็นทีมเราเปิดกว้างมาก - พวกเขายังปิดปากฉันในช่วงเวลาหนึ่งเพื่อขจัด 'การรายงาน' ที่รู้สึกว่าเราเริ่มได้รับ การขาดความเปิดกว้างโดยทั่วไปแล้วเป็นข้อโต้แย้งที่ใหญ่ที่สุดต่อผู้จัดการในฐานะหัวหน้าฝ่ายต่อสู้ แต่จัดการได้ดีสามารถเอาชนะได้อย่างง่ายดายด้วยวัฒนธรรมที่ถูกต้อง ฉันได้รับคำเตือนจากโค้ชที่มีประสบการณ์ว่านี่เป็นสถานการณ์ที่อันตรายและมีความเสี่ยง 'ถ้าสิ่งต่าง ๆ ไม่ดี' วิธีที่ฉันเห็นมันทั้งสองตำแหน่งนั้นไม่ขัดแย้งกันในทั้งสองบทบาทฉันมีเป้าหมายเดียวกันสำหรับทีมและบุคคลทั่วไป การต่อสู้แย่งชิงกันแก้ไขความขัดแย้งภายในทีมซึ่งอาจเป็นบทบาทผู้จัดการ ลักษณะการจัดการด้วยตนเองของ sprints นำการจัดสรรงานที่ผู้จัดการทำตามประเพณี ทั้งหมดที่ฉันเห็นเหลืออยู่เพื่อรับในฐานะผู้จัดการ dev กำลังทำให้แน่ใจว่าความต้องการของแต่ละบุคคลบรรลุตามวัตถุประสงค์อาชีพสถานที่ทำงาน ฯลฯ ฉันมีการติดต่อกับสมาชิกในทีมทุกสัปดาห์เพื่อแจ้งปัญหาและจัดการงานด้านการดูแลระบบ สิ่งนี้เกี่ยวข้องโดยตรงกับทีมมากหรือบทบาทของฉันในการต่อสู้กับเจ้านาย ฉันเข้าใจในองค์กรขนาดใหญ่ว่าสิ่งนี้จะจัดการไม่ได้และมีบทบาทที่แยกจากกัน แต่สำหรับองค์กรขนาดเล็กเราไม่สามารถพิสูจน์ Scrum Master หรือผู้จัดการฝ่ายพัฒนาคนอื่นได้ โปรดให้ความกระจ่างแก่ฉันเกี่ยวกับข้อผิดพลาดของผู้จัดการการพัฒนาในฐานะ Scrum Masters โดยไม่รวมคะแนนที่ฉันได้กล่าวไว้ข้างต้นและเอาชนะได้แล้ว
27 scrum  teamwork  team  roles 

4
การลงทะเบียน CPU คืออะไร
คำถามนี้รบกวนฉันมาระยะหนึ่งแล้วและวันนี้ฉันคิดว่าฉันจะทำ Google ฉันได้อ่านสิ่งบางอย่างเกี่ยวกับเรื่องนี้และดูเหมือนว่ามันคล้ายกันมากกับสิ่งที่ฉันได้รู้จักกันเสมอเป็นหน่วยประมวลผลแคช มีความแตกต่างระหว่างฉันสองคนหรือว่าถูกต้องเมื่อฉันคิดว่ามันเหมือนกันหรือไม่? จำเป็นต้องมีการลงทะเบียนเพื่อใช้ภายใน CPU เพื่อให้ทำงานได้หรือไม่? ตามวิกิพีเดียการลงทะเบียนเป็นสถานที่ใน CPU ที่สามารถเข้าถึงและแก้ไขหน่วยความจำได้อย่างรวดเร็วก่อนที่จะถูกส่งกลับไปที่ RAM ฉันเข้าใจผิดหรือแคชและลงทะเบียนเหมือนกันจริงหรือไม่?

3
อัลกอริทึมการค้นหาสตริงใดที่เร็วที่สุด
ฉันติดอยู่กับที่ซึ่งเป็นอัลกอริธึมการค้นหาสตริงที่เร็วที่สุดได้ยินความคิดเห็นมากมาย แต่ในที่สุดฉันก็ไม่แน่ใจ ฉันเคยได้ยินบางคนพูดว่าอัลกอริทึมที่เร็วที่สุดคือ Boyer-Moore และบางคนบอกว่า Knuth-Morris-Pratt เร็วกว่าจริง ผมได้มองขึ้นสำหรับซับซ้อนทั้งในส่วนของพวกเขา O(n+m)แต่พวกเขาส่วนใหญ่มีลักษณะเดียวกัน ฉันได้พบว่าในกรณีที่เลวร้ายที่สุดกรณี Boyer-Moore มีO(nm)ความซับซ้อนเมื่อเทียบกับ Knuth-Morris-Pratt ซึ่งมี O (m + 2 * n) โดยที่ n = ความยาวของข้อความและ m = ความยาวของรูปแบบ เท่าที่ฉันรู้บอยเยอร์ - มัวร์มีเวลาตรงเชิงเส้นที่เลวร้ายที่สุดถ้าฉันจะใช้กฎกาลิล คำถามของฉันสิ่งที่จริงแล้วคืออัลกอริธึมการค้นหาสตริงที่เร็วที่สุด (คำถามนี้รวมถึงอัลกอริธึมต่อยที่เป็นไปได้ทั้งหมดไม่ใช่แค่ Boyer-Moore และ Knuth-Morris-Pratt) แก้ไข:เนื่องจากคำตอบนี้ สิ่งที่ฉันกำลังมองหาคือ: ได้รับข้อความTและรูปแบบที่Pผมต้องไปหาที่ปรากฏทั้งหมดของในPT นอกจากนี้ความยาวของ P และ T มาจาก[1,2 000 000]และโปรแกรมต้องทำงานต่ำกว่า 0.15 วินาที ฉันรู้ว่า KMP และ …

9
ประโยชน์ของการให้ผู้ดำเนินการมอบหมายคืนค่าคืออะไร?
ฉันกำลังพัฒนาภาษาที่ฉันต้องการแทนที่ทั้ง Javascript และ PHP (ฉันไม่เห็นปัญหาใด ๆ กับสิ่งนี้มันไม่เหมือนภาษาใดภาษาหนึ่งเหล่านี้ที่มีฐานการติดตั้งขนาดใหญ่) หนึ่งในสิ่งที่ฉันต้องการเปลี่ยนคือการเปลี่ยนผู้ประกอบการมอบหมายให้เป็นคำสั่งการมอบหมายลบความสามารถในการใช้ประโยชน์จากค่าที่ส่งคืน x=1; /* Assignment. */ if (x==1) {} /* Comparison. */ x==1; /* Error or warning, I've not decided yet. */ if (x=1) {} /* Error. */ ฉันรู้ว่านี่จะหมายความว่าฟังก์ชั่นหนึ่งบรรทัดที่คน C รักมากจะไม่ทำงานอีกต่อไป ฉันคิด (มีหลักฐานน้อยกว่าประสบการณ์ส่วนตัวของฉัน) ว่าส่วนใหญ่ครั้งนี้เกิดขึ้นมันตั้งใจจริง ๆ ที่จะดำเนินการเปรียบเทียบ หรือมันคืออะไร? มีการใช้งานจริงของค่าส่งคืนของผู้ดำเนินการที่ไม่สามารถเขียนใหม่ได้หรือไม่? (สำหรับภาษาใด ๆ ที่มีแนวคิดดังกล่าว)

7
ฉันควรจะกังวลเกี่ยวกับการมอบหมายโปรแกรม overengineering ให้ในระหว่างการสัมภาษณ์? [ปิด]
ฉันเพิ่งได้สัมภาษณ์ทางโทรศัพท์กับ บริษัท หลังจากการสัมภาษณ์ทางโทรศัพท์ฉันได้รับคำสั่งให้ทำการเขียนโปรแกรมสั้น ๆ (โปรแกรมขนาดเล็กไม่ควรใช้เวลาเกินสามชั่วโมง) ฉันได้รับคำสั่งโดยตรงเท่านั้นที่จะเสร็จสิ้นการมอบหมายและเปิดรหัส ฉันได้รับอิสระอย่างเต็มที่ในการใช้ภาษาใด ๆ ที่ฉันต้องการและไม่ได้บอกอย่างชัดเจนถึงวิธีการเปลี่ยนรหัส ทันทีที่ฉันวางแผนจะโยนมันลงบน Github เขียนชุดทดสอบโดยใช้ Travis-CI (รวมอย่างต่อเนื่องฟรีสำหรับที่เก็บ Github สาธารณะ) เพื่อเรียกใช้ชุดทดสอบและใช้ CMake เพื่อสร้าง Linux makefiles สำหรับ Travis-CI ด้วยวิธีนี้ไม่เพียง แต่ฉันสามารถแสดงให้เห็นว่าฉันเข้าใจวิธีใช้ Git, CMake, Travis-CI และวิธีการเขียนการทดสอบ แต่ฉันยังสามารถเชื่อมโยงไปยังหน้า Travis-CI เพื่อให้พวกเขาสามารถเห็นผลลัพธ์ของการทดสอบ ฉันคิดว่าจะทำให้สะดวกขึ้นเล็กน้อยสำหรับผู้สัมภาษณ์ เนื่องจากฉันรู้ว่าเทคโนโลยีเหล่านั้นดีมันจะเพิ่มเวลาในการมอบหมาย อย่างไรก็ตามฉันกังวลเล็กน้อยว่าการทำสิ่งนี้ให้เป็นงานที่ค่อนข้างง่ายจะดูไม่ดี แม้ว่ามันจะไม่เพิ่มเวลามากขึ้นสำหรับฉัน แต่ฉันไม่ต้องการให้พวกเขาคิดว่าฉันใช้เวลามากเกินไปกับสิ่งที่ควรจะเรียบง่าย

5
คนอื่นสามารถจดสิทธิบัตรอัลกอริทึมแบบเปิดของฉัน [ปิด]
ฉันได้เขียนอัลกอริทึมการค้นหาแบบเรียกซ้ำเพื่อค้นหาขอบเขตของโครงสร้างข้อมูล voxel เพื่อให้มีประสิทธิภาพยิ่งขึ้น ฉันมองไปรอบ ๆ และมันก็เป็นเทคนิคที่ง่ายและชัดเจนที่ไม่มีใครใส่ใจจดสิทธิบัตรหรือเป็นนวนิยายและไม่มีใครทำแบบนี้มาก่อน มันเป็น "เผยแพร่" อย่างเปิดเผยใน GitHub และได้รับการคุ้มครองภายใต้ GPL ฉันต้องการแสดงให้ผู้อื่นเห็นว่าสามารถปรับปรุงได้หรือไม่ ... ฉันกลัวว่าแม้ว่าฉันจะเขียนและตีพิมพ์ แต่บางคนอาจพยายามจดสิทธิบัตรแนวคิดเดียวกัน ฉันปลอดภัยได้รับการปกป้องจากแบนเนอร์ของซอฟต์แวร์โอเพนซอร์ซหรือไม่หรือฉันต้องพยายามปกป้องตัวเองเหมือนปืนใหญ่และโทรลล์สิทธิบัตร ฉันเชื่อว่าสิทธิบัตรซอฟต์แวร์นั้นชั่วร้ายและเพื่อให้ซอฟต์แวร์ที่ดีที่สุดในการเขียนนั้นหลายคนต้องมองเห็น ฉันกังวลว่านี่อาจเป็นมุมมองที่ค่อนข้างไร้สาระเกี่ยวกับวิธีการเขียนซอฟต์แวร์ แต่ฉันสงสัยว่าคนอื่นคิดอย่างไร

4
โยนข้อยกเว้นเข้าไปในที่สุด
วิเคราะห์รหัส Static เช่นเสริมสร้าง "บ่น" เมื่อมีข้อยกเว้นอาจจะโยนภายในบล็อกบอกว่าfinally Using a throw statement inside a finally block breaks the logical progression through the try-catch-finallyปกติฉันเห็นด้วยกับเรื่องนี้ แต่เมื่อเร็ว ๆ นี้ฉันเจอโค้ดนี้: SomeFileWriter writer = null; try { //init the writer //write into the file } catch (...) { //exception handling } finally { if (writer!= null) writer.close(); } …

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