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

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

3
การใช้ยัติภังค์ในคีย์ JSON เป็นเรื่องที่ผิดหรือไม่?
ฉันเห็นคำถามมากมายเกี่ยวกับการเข้าถึงคีย์ JSON ที่ใช้ยัติภังค์ (กรณีเคบับ) แต่ตอนนี้ฉันพบว่าตัวเองสงสัยว่าฉันควรติดกับ camelCase หรือ snake_case ในกุญแจของฉัน ฉันรู้ว่ายัติภังค์สามารถสร้างการแมปที่ซับซ้อนได้เมื่อทำการย้ายระหว่างภาษา ฉันเคยเห็นไลบรารี่ของ JSON ที่ทำการ deserialize แปลงคีย์เหล่านั้นเป็นรูปแบบ camelCase ตัวอย่าง: var something = { "some-value": 'thing' } Vs var something = { "someValue": 'thing', "some_other_value": 'thing_two' }

1
การผกผันของการควบคุมเกี่ยวข้องกับการพึ่งพาการผกผันอย่างไร
ในบทความจำนวนมากทั่วทั้งเว็บคำว่า Inversion of Control และ Dependency Inversion Principle ดูเหมือนจะสับสนและถูกนำมาใช้เป็นคำพ้องความหมาย (ความสับสนเพิ่มเติมถูกบังคับใช้โดยเครื่องมือที่เรียกว่า "ตู้คอนเทนเนอร์ DI" และ "IoC บทความ Wikipediaทำงานได้ดีมากที่พยายามอธิบายว่า IoC นั้นไม่เหมือนกับ DI: inversion of control (IoC) อธิบายถึงการออกแบบที่ส่วนที่กำหนดเองของโปรแกรมคอมพิวเตอร์ได้รับการไหลของการควบคุมจากไลบรารีทั่วไปที่สามารถใช้ซ้ำได้ ดังนั้น DIP จึงเกี่ยวกับการมีโมดูลของคุณขึ้นอยู่กับ abstractions มากกว่าการใช้งานที่เป็นรูปธรรม และ IoC กำลังควบคุมการไหลของโปรแกรมของคุณไปยังโมดูลอื่น และสิ่งหนึ่งที่คุณสามารถมีโมดูลนี้คือแก้ไขการพึ่งพาที่รันไทม์ ความแตกต่างนี้ดูยุติธรรม แต่ฉันไม่เคยเห็นใครพูดถึงแอปพลิเคชันอื่น ๆ ของหลักการ IoC นอกเหนือจากการแก้ไขการพึ่งพา คำจำกัดความของ Wikipedia นั้นค่อนข้างกว้างและดูเหมือนว่าคุณสามารถทำได้มากขึ้นด้วยโมดูลที่สามารถโทรเข้ารหัสที่กำหนดเองตามการกำหนดค่าและตรรกะภายในบางอย่าง ดังนั้นนี่เป็นคำถามที่ฉันยังไม่สามารถเข้าใจได้: ความสัมพันธ์ที่แท้จริงระหว่าง IoC และกรมทรัพย์สินทางปัญญาคืออะไร? IoC ทำหน้าที่เป็นเครื่องมือในการดำเนินการของ DIP หรือไม่? …

2
RESTful API ควรจะสามารถส่งคืนไฟล์หรือเพียงแค่ตำแหน่ง
นี่ทำให้ฉันงุนงงมาระยะหนึ่งแล้ว ตัวอย่างเช่นเรามี REST API ที่ให้เนื้อหาพื้นฐานไปยังระบบการบริโภคและการผลิต JSON ที่จุดสิ้นสุดนี้จะสร้าง URL ให้กับรูปภาพและคำอธิบายและพบได้ดังนี้: // localhost / myApi / pictures / 1 { id: 1, description: "This is a pretty picture of a daisy", URL: <OUR URL> } ตอนนี้ OUR_URL ควรชี้ไปที่ตำแหน่งบน API เช่น // localhost / myApi / files / pictures / 1 ซึ่งส่งคืน JPG …

2
(พื้นฐาน) แบบสอบถาม SQL มีความหมายเทียบเท่ากับฟังก์ชันคำสั่งซื้อที่สูงขึ้นหรือไม่
SQL นั้นเป็นโดเมนเฉพาะของ map + fold + filter หรือไม่ ดูเหมือนว่าฉันว่า SQL ต่อไปนี้: SELECT name FROM fruits WHERE calories < 100 เป็นเพียงน้ำตาล syntactic สำหรับแผนที่ + ตัวกรอง + การดำเนินการพับ: var fruits = [{id : 1, name: 'orange', calories : 100}, {id : 2, name : 'banana', calories : 150}, {id : 3, name: …

4
วิธีที่สะอาดที่สุดในการเขียนซอฟต์แวร์ที่มีขั้นตอนตามหลักเหตุผลในภาษา OO
ฉันเป็นวิศวกรไฟฟ้าและฉันไม่รู้ว่าฉันทำอะไรอยู่ โปรดบันทึกผู้ดูแลรหัสของฉันในอนาคต เมื่อเร็ว ๆ นี้ฉันได้ทำงานกับโปรแกรมขนาดเล็กจำนวนมาก (ใน C #) ซึ่งฟังก์ชั่นการใช้งานเป็น "ขั้นตอน" ตามหลักเหตุผล ตัวอย่างเช่นหนึ่งในนั้นคือโปรแกรมที่รวบรวมข้อมูลจากฐานข้อมูลต่าง ๆ ใช้ข้อมูลนั้นเพื่อสร้างเรียงลำดับของหน้าสรุปพิมพ์และจากนั้นออก ตรรกะที่จำเป็นสำหรับทั้งหมดนั้นอยู่ที่ประมาณ 2,000 บรรทัด แน่นอนฉันไม่ต้องการสิ่งทั้งหมดในที่เดียวmain()แล้ว "ทำความสะอาด" กับ#regions เป็นนักพัฒนาก่อนหน้านี้ได้ทำ (ตัวสั่น) นี่คือบางสิ่งที่ฉันได้ลองไปแล้วโดยที่ไม่พึงพอใจมาก: สร้างยูทิลิตี้แบบคงที่สำหรับการใช้งานแต่ละบิตอย่างคร่าวๆเช่น DatabaseInfoGetter, SummaryPageGenerator และ PrintUtility ทำให้ฟังก์ชั่นหลักดูเหมือนว่า: int main() { var thisThing = DatabaseInfoGetter.GetThis(); var thatThing = DatabaseInfoGetter.GetThat(); var summary = SummaryPageGenerator.GeneratePage(thisThing, thatThing); PrintUtility.Print(summary); } สำหรับโปรแกรมหนึ่งฉันยังไปกับอินเตอร์เฟส int main() …

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

3
จำเป็นต้องใช้ Doctype สำหรับเอกสาร HTML5 หรือไม่
เมื่อเร็ว ๆ นี้ฉันได้สัมภาษณ์งานและหนึ่งในคำถามคือ "จำเป็นต้องมีประเภทเอกสารสำหรับเอกสาร HTML 5 หรือไม่" ฉันตอบว่า "ไม่" แต่มีความรู้สึกว่าฉันผิด จากw3ดูเหมือนว่าจำเป็นจริงๆ แต่ถ้าฉันพิมพ์ HTML อย่างง่าย <html> <body> <input type="color" disabled/> </body> </html> บันทึกเป็น HTML และลองเปิดใน Chrome ซึ่งจะทำงานได้ดีอย่างสมบูรณ์พร้อมอินพุตสีใหม่ (ปิดใช้งาน) อินพุตนั้นคือ HTML5 เช่นเดียวกับแอตทริบิวต์ ดังนั้นคำถามคือ - ฉันต้องระบุประเภทหรือไม่? คำตอบที่ถูกต้องสำหรับการสัมภาษณ์คืออะไร?
12 html  w3c 

5
สคริปต์ Perl ควรมีส่วนขยายหรือไม่
ฉันเพิ่งเริ่มอ่านLearning Perl รุ่นที่ 6ของ O'Reilly และรู้สึกประหลาดใจเมื่อฉันเจอข้อความที่ตัดตอนมานี้ #!/usr/bin/perl print "Hello, world!\n"; ลองจินตนาการว่าคุณได้พิมพ์ข้อความนั้นลงในโปรแกรมแก้ไขข้อความ (ไม่ต้องกังวลเกี่ยวกับความหมายของชิ้นส่วนและวิธีการทำงานคุณจะเห็นเกี่ยวกับชิ้นส่วนในเวลาสั้น ๆ ) โดยทั่วไปคุณสามารถบันทึกโปรแกรมนั้นภายใต้ชื่อที่คุณต้องการ Perl ไม่ต้องการชื่อไฟล์หรือส่วนขยายพิเศษใด ๆ และเป็นการดีกว่าที่จะไม่ใช้ส่วนขยายเลย ทำไมมันถึงดีกว่าถ้าไม่มีนามสกุล ลองนึกภาพว่าคุณเขียนโปรแกรมเพื่อคำนวณคะแนนโบว์ลิ่งและคุณได้บอกเพื่อน ๆ ทุกคนของคุณว่ามันเรียกว่า bowling.plx วันหนึ่งคุณตัดสินใจที่จะเขียนมันใหม่ในซีคุณยังเรียกมันด้วยชื่อเดียวกันนั่นก็หมายความว่ามันยังเขียนด้วยภาษา Perl อยู่หรือเปล่า? หรือคุณบอกทุกคนว่ามีชื่อใหม่ (และอย่าเรียกมันว่า bowling.c โปรด!) คำตอบก็คือมันไม่มีธุรกิจใดที่พวกเขาจะเขียนภาษาถ้าพวกเขาใช้มัน ดังนั้นควรเรียกง่ายๆว่าโบว์ลิ่งในตอนแรก นี่เป็นแหล่งข้อมูลเดียวที่ฉันเห็นด้วยมุมมองนี้ทุกอย่างที่ฉันอ่านได้รองรับส่วนขยาย. pl ฉันยังไม่มีโปรแกรมเมอร์ Perl และฉันต้องการทราบว่ามุมมองของชุมชนเกี่ยวกับเรื่องนี้คืออะไรก่อนที่ฉันจะติดเป็นนิสัย
12 perl 

2
วิธีจัดทำเอกสารข้อมูลจำเพาะรูปแบบไฟล์ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา สำหรับโครงการฉันต้องทำงานกับไฟล์ประเภทต่าง ๆ จากเกมเก่า ๆ และซอฟต์แวร์ที่เกี่ยวข้อง - ไฟล์กำหนดค่า, บันทึก, ไฟล์เก็บถาวรทรัพยากรและอื่น ๆ ส่วนใหญ่ของเอกสารเหล่านี้ยังไม่ได้จัดทำเอกสารและไม่มีเครื่องมือใดที่ทำงานร่วมกับพวกเขาได้ดังนั้นฉันต้องย้อนกลับสร้างรูปแบบและสร้างห้องสมุดของตัวเองเพื่อจัดการกับมัน แม้ว่าฉันไม่คิดว่าจะมีความต้องการส่วนใหญ่เป็นอย่างมาก แต่ฉันตั้งใจจะเผยแพร่ผลลัพธ์ของความพยายามของฉัน มีมาตรฐานที่ยอมรับสำหรับรูปแบบไฟล์เอกสารหรือไม่? เมื่อมองไปรอบ ๆ นั้นมีหลายลักษณะที่ใช้งาน: บางอย่างเช่น. ZIP รูปแบบไฟล์สเปคนั้นดูดีมาก คนอื่น ๆ เช่นเดียวกับใน XentaxWiki นั้นเป็นคำศัพท์ที่สั้นกว่ามาก - ฉันพบว่าบางคนอ่านยาก สิ่งที่ฉันชอบที่สุดคือคำอธิบายของระบบไฟล์การ์ดหน่วยความจำของ PlayStation 2ซึ่งมีทั้งข้อความอธิบายรายละเอียดและ 'แผนที่หน่วยความจำ' ที่มีออฟเซ็ตและอื่น ๆ - มันตรงกับกรณีการใช้งานของฉันมากที่สุด มันจะแตกต่างกันเล็กน้อยสำหรับรูปแบบที่แตกต่างกัน แต่ดูเหมือนว่าควรมีหลักการทั่วไปที่ฉันควรลองทำตาม แก้ไข: ฉันดูเหมือนจะไม่ได้อธิบายอย่างดีว่าฉันต้องการทำอะไร ให้ฉันสร้างตัวอย่าง ฉันอาจมีบางส่วนของซอฟต์แวร์เก่าที่เก็บการกำหนดค่าไว้ในไฟล์ 'binary' - …

2
ทำความเข้าใจและจดจำพารามิเตอร์ rebase git
จนถึงตอนนี้ส่วนที่สับสนมากที่สุดของการคอมไพล์ก็คือการรีเฟรชไปยังสาขาอื่น โดยเฉพาะมันคืออาร์กิวเมนต์บรรทัดคำสั่งที่สร้างความสับสน ทุกครั้งที่ฉันต้องการ rebase ชิ้นเล็ก ๆ ของกิ่งหนึ่งลงบนปลายอีกอันฉันต้องทบทวนเอกสาร rebit git และใช้เวลาประมาณ 5-10 นาทีเพื่อทำความเข้าใจว่าข้อโต้แย้งหลัก 3 ข้อควรเป็นอย่างไร git rebase <upstream> <branch> --onto <newbase> อะไรคือกฎเกณฑ์ที่ดีที่จะช่วยให้ฉันจดจำว่าพารามิเตอร์ทั้งสามเหล่านี้ควรถูกตั้งค่าไว้อย่างไรเมื่อมีการรีบูตใด ๆ ไปยังสาขาอื่น จำไว้ว่าฉันได้อ่านเอกสาร git-rebase ซ้ำแล้วซ้ำเล่าและอีกครั้งและอีกครั้งและอีกครั้ง (และอีกครั้ง) แต่มันก็ยากที่จะเข้าใจเสมอ (เช่นกระดาษขาววิทยาศาสตร์ที่น่าเบื่อหรือบางอย่าง) ดังนั้น ณ จุดนี้ฉันรู้สึกว่าฉันต้องเกี่ยวข้องกับคนอื่นเพื่อช่วยให้เข้าใจ เป้าหมายของฉันคือฉันไม่ควรตรวจสอบเอกสารประกอบสำหรับพารามิเตอร์พื้นฐานเหล่านี้ ฉันไม่สามารถจดจำพวกเขาได้จนถึงตอนนี้และฉันได้ทำเงินคืนจำนวนหนึ่งแล้ว ดังนั้นมันเป็นบิตแปลกที่ฉันได้รับสามารถที่จะจดจำทุกคำสั่งอื่น ๆ และพารามิเตอร์เพื่อให้ห่างไกล แต่ไม่ rebase --ontoกับ
12 git 

4
เป็นความคิดที่ผิดหรือไม่ที่จะมี <style> ใน <body>?
ในโค้ดด้านล่างนี้ฉันวางสไตล์ชีทภายในพร้อมกับแท็กเนื้อหาแทนที่จะใส่ไว้ในส่วนหัว สำหรับแอปพลิเคชันหน้าเดียวฉันกำลังพิจารณาที่จะทำสิ่งนี้สำหรับสไตล์ที่สามารถใช้ได้กับหน้านั้นเพียงอย่างเดียวแทนที่จะมีไฟล์ pagespecific.css แยกกัน มีสถานการณ์ที่สิ่งนี้มีข้อเสียเนื่องจากฉันไม่ได้ใส่ในส่วนหัว? &lt;!-- myPartial.html starts here --&gt; &lt;!-- Like to keep styles unique to this html right here in this file --&gt; &lt;div&gt; &lt;style&gt; body { background-color: red; } #myText { color: white; } &lt;/style&gt; &lt;span id='myText'&gt;Hello&lt;/span&gt; &lt;/div&gt; &lt;!-- myPartial.html ends here --&gt;
12 html  css 

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

5
แนวคิดของคลาสเปลี่ยนไปอย่างไรเมื่อส่งข้อมูลไปยังตัวสร้างแทนพารามิเตอร์เมธอด?
สมมติว่าเรากำลังแยกวิเคราะห์ การใช้งานอย่างหนึ่งอาจ: public sealed class Parser1 { public string Parse(string text) { ... } } หรือเราสามารถส่งข้อความไปยังผู้สร้างได้: public sealed class Parser2 { public Parser2(string text) { this.text = text; } public string Parse() { ... } } การใช้งานเป็นเรื่องง่ายในทั้งสองกรณี แต่การเปิดใช้งานพารามิเตอร์อินพุตเมื่อเปรียบเทียบกับกรณีอื่น ๆหมายความว่าParser1อย่างไร ฉันได้ส่งข้อความอะไรถึงเพื่อนนักเขียนโปรแกรมเมื่อพวกเขาดู API นอกจากนี้ยังมีข้อดี / ข้อเสียด้านเทคนิคในบางกรณีหรือไม่? คำถามอื่นเกิดขึ้นเมื่อฉันตระหนักว่าอินเทอร์เฟซจะค่อนข้างไม่มีความหมายในการใช้งานที่สอง: public interface IParser { string …

2
อะไรคือความแตกต่างของวิธีการเพิ่มและนำเสนอของ PriorityQueue ของ Java?
ในjava.util.PriorityQueueเรามีวิธีการและadd(E e) offer(E e)ทั้งสองวิธีมีการบันทึกไว้เป็น: แทรกองค์ประกอบที่ระบุลงในคิวลำดับความสำคัญนี้ ความแตกต่างระหว่างสองวิธีนี้มีอะไรบ้าง
12 java  collections 

4
ภาษาใดเป็นภาษาการเขียนโปรแกรมและลิขสิทธิ์หนึ่งภาษาโปรแกรมนั้นเป็นอย่างไร
ฉันตัดสินใจที่จะสร้างภาษาการเขียนโปรแกรมของตัวเองส่วนใหญ่เพียงเพื่อความสนุกสนาน อย่างไรก็ตามฉันมีความสนใจในด้านกฎหมายของทุกอย่าง ตัวอย่างเช่นคุณสามารถอนุญาตให้ใช้งานโปรแกรมเฉพาะภายใต้ข้อกำหนดเฉพาะ อย่างไรก็ตามคุณจะออกใบอนุญาตภาษาได้อย่างไร นอกจากนี้โดยที่ฉันไม่ได้หมายถึงการใช้ภาษา (คอมไพเลอร์ &amp; VM) แต่เป็นมาตรฐานเอง มีอะไรอีกบ้างสำหรับภาษาการเขียนโปรแกรมที่ฉันขาดหายไป? สิ่งที่ฉันต้องการบรรลุโดยการออกใบอนุญาตดังกล่าว: ทำให้เป็น FOSS อย่างสมบูรณ์ (ภาษาสามารถเป็น FOSS ได้หรือว่าการใช้งานนั้นสามารถเป็น FOSS ได้หรือไม่) สร้างตัวเองในฐานะผู้เขียน (คุณสามารถเป็นผู้เขียนภาษาได้อย่างถูกกฎหมายหรือไม่หรือเพียงแค่การนำไปใช้) จัดทำขึ้นเพื่อให้ทุกคนที่ใช้ภาษาของฉันจะต้องให้ความสำคัญกับฉัน (สไตล์ MIT โปรดทราบว่าฉันไม่มีความหวังใด ๆ สำหรับทุกคนที่เคยทำเช่นนั้น ผมคิดว่าการแก้ปัญหาจะแยกอนุญาต VM และคอมไพเลอร์สำหรับภาษาของฉันเป็น "การดำเนินการอย่างเป็นทางการ" แล้วใบอนุญาตเอกสารการออกแบบเป็นภาษาของตัวเอง ฉันหายไปตรงนี้อะไรนะ?

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