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

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

15
ทำไม Java ถึงเป็นไปได้เร็วกว่า C ++?
บางครั้ง Java มีประสิทธิภาพสูงกว่า C ++ ในการวัดประสิทธิภาพ แน่นอนว่าบางครั้ง C ++ มีประสิทธิภาพสูงกว่า ดูลิงค์ต่อไปนี้: http://keithlea.com/javabench/ http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/ http://blog.cfelde.com/2010/06/c-vs-java-performance/ แต่สิ่งนี้เป็นไปได้อย่างไร มันรบกวนความคิดของฉันที่การแปลรหัสโดยโค้ดอาจเร็วกว่าภาษาที่คอมไพล์ ใครช่วยอธิบายหน่อยได้ไหม? ขอบคุณ!
79 java  c++  performance 

25
ผู้ประกอบการพิจารณาว่าเป็นอันตรายหรือไม่? [ปิด]
ตัวอย่างเช่นคุณต้องการซับไลเนอร์นี้หรือไม่ int median(int a, int b, int c) { return (a<b) ? (b<c) ? b : (a<c) ? c : a : (a<c) ? a : (b<c) ? c : b; } หรือโซลูชัน if / else ที่เกี่ยวข้องกับคำสั่ง return หลายรายการ? เมื่อใด?:ที่เหมาะสมและเมื่อใด ควรสอนหรือซ่อนเร้นจากผู้เริ่มต้นหรือไม่

4
อะไรคือความแตกต่างระหว่างคำนำหน้าชื่อ“ กับ” และ“ เป็น” ความแตกต่าง? [ปิด]
ความแตกต่างระหว่าง"กับ"และ"เป็น"คำนำหน้าชื่อเมธอดเช่นคืออะไร ToList () asList () ฯลฯ ... เมื่อใดที่จะใช้ซึ่งเมื่อออกแบบวิธีการ?
78 java  naming 

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

5
คุณจะใส่ราคาลงในซอร์สโค้ดของคุณได้อย่างไร [ปิด]
ฉันถูกขอให้ขายซอร์สโค้ด (พร้อมกับผู้ใช้ปัจจุบัน) ของแอพยูทิลิตี้เล็ก ๆ ที่ฉันสร้างขึ้นเมื่อหลายปีก่อน ฉันได้ตรวจสอบวิธีการใส่ราคาลงในซอร์สโค้ด แต่จนถึงขณะนี้ยังไม่มีวิธีแก้ไขที่ดี ฉันค้นหาสุทธิแล้ว แต่ไม่พบสิ่งใดมีประโยชน์ จากนั้นฉันก็เจอผู้ใช้บางคนที่ขายซอร์สโค้ดกับผู้ใช้ด้วยเช่นกัน แต่ราคาของพวกเขาดูสูงเกินจริง ตัวอย่างเช่นหนึ่งคนคำนวณราคาต่อผู้ใช้ที่ประมาณ $ 200 เขามีผู้ใช้ 80 คนและลงเอยด้วยการขายแหล่งข้อมูลกับผู้ใช้ในราคา $ 30k เขาคิดราคานี้อย่างไร ฉันสามารถหาราคาที่ดีด้วยสูตรนี้: (จำนวนผู้ใช้ x ราคาแอป) + (ราคาแอพ x จำนวนผู้ใช้ใหม่ในหนึ่งปี) ? ถ้านี่เป็นสูตรที่ดีคุณจะทราบราคาที่ยังไม่มีผู้ใช้ได้อย่างไร

5
เหตุใดจึงไม่มีระบบการจัดการแพ็คเกจสำหรับ C และ C ++ [ปิด]
มีภาษาการเขียนโปรแกรมบางอย่างซึ่งมีอยู่ในระบบการจัดการบรรจุภัณฑ์: CTANสำหรับ TeX CPANสำหรับ Perl Pip & Eggsสำหรับ Python Mavenสำหรับ Java พันธมิตรสำหรับ Haskell อัญมณีสำหรับทับทิม npmสำหรับ NodeJS bowerสำหรับ Javascript & CSS ส่วนหน้า นักเก็ตสำหรับ C # นักแต่งเพลงสำหรับ PHP มีภาษาอื่นที่ใช้ระบบดังกล่าวหรือไม่? แล้ว C และ C ++ ล่ะ? (นั่นเป็นคำถามหลัก!) ทำไมไม่มีระบบดังกล่าวสำหรับพวกเขา? และไม่ได้มีการสร้างแพคเกจสำหรับyum, apt-getหรือระบบการจัดการแพคเกจอื่น ๆ ทั่วไปดีขึ้นหรือไม่
78 c++  c  builds  packages 

15
ทำไมรหัสผ่านควรถูกเข้ารหัสหากมีการจัดเก็บในฐานข้อมูลที่ปลอดภัย
ฉันมีบริการเว็บ ตอนนี้ฉันมีรหัสผ่านที่เก็บเป็นข้อความธรรมดาในตารางMySQLบนเซิร์ฟเวอร์ของฉัน ฉันรู้ว่านี่ไม่ใช่วิธีปฏิบัติที่ดีที่สุดและนั่นคือสาเหตุที่ฉันกำลังทำอยู่ ทำไมรหัสผ่านควรถูกเข้ารหัสหากมีการจัดเก็บในฐานข้อมูลที่ปลอดภัย ฉันรู้ว่าถ้าใครบางคนแฮ็คเข้าฐานข้อมูลของฉันพวกเขาจะได้รับรหัสผ่านของทุกคน แต่ฉันมีปัญหาอื่น ๆ ถ้ามีคนเข้ามาในฐานข้อมูลของฉันเช่นการลบข้อมูล สถานการณ์ที่ฉันคิดได้ก็คือคุณถูกแฮ็ก คุณคืนค่าฐานข้อมูลจากสองสามชั่วโมงที่ผ่านมาและทุกอย่างดี อย่างไรก็ตามหากรหัสผ่านของคุณเป็นข้อความธรรมดา ... ขโมยมีรหัสผ่านทั้งหมดและคุณต้องรีเซ็ตรหัสผ่านทั้งหมด รบกวนผู้ใช้ของคุณ หากรหัสผ่านถูกเข้ารหัสคุณสามารถคืนค่าฐานข้อมูลก่อนหน้าได้ นี่เป็นความคิดที่ถูกต้องหรือไม่

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

11
ทำไม String ถึงไม่เปลี่ยนรูปใน Java?
ฉันไม่เข้าใจเหตุผลของมัน ฉันมักจะใช้คลาส String เหมือนนักพัฒนาอื่น ๆ แต่เมื่อฉันแก้ไขค่าของมันอินสแตนซ์ใหม่ของ String ที่สร้างขึ้น สิ่งที่อาจเป็นสาเหตุของการไม่เปลี่ยนรูปแบบสำหรับคลาส String ใน Java? ฉันรู้ว่ามีทางเลือกบางอย่างเช่น StringBuffer หรือ StringBuilder มันเป็นเพียงความอยากรู้

4
มีสถิติใดที่แสดงถึงความนิยมของ Git เทียบกับ SVN หรือไม่? [ปิด]
ฉันกำลังเขียนเรียงความและต้องการมีหลักฐานเชิงประจักษ์บางทีข้อมูลระยะยาวที่เปรียบเทียบความนิยมของเทคโนโลยีเหล่านี้ในช่วงระยะเวลาหลายปี มีสถิติใดที่แสดงถึงความนิยมของ Git เทียบกับ SVN หรือไม่?
78 git  svn 

12
เราสามารถแทนที่ XML ด้วย JSON ได้ทั้งหมดหรือไม่ [ปิด]
ฉันแน่ใจว่านักพัฒนาจำนวนมากคุ้นเคยกับXMLและJSONและพวกเขาใช้ทั้งคู่ ดังนั้นจึงไม่มีประเด็นในการอธิบายว่าพวกเขาคืออะไรและอะไรคือจุดประสงค์ของพวกเขาแม้โดยสังเขป หากเราพยายามทำแผนที่แนวคิดของพวกเขาเราสามารถพูดได้ (แก้ไขให้ฉันถ้าฉันผิด): แท็ก XML เทียบเท่ากับ JSON {} แอตทริบิวต์ XML เทียบเท่ากับคุณสมบัติ JSON การรวบรวมแท็ก XML เทียบเท่ากับ JSON [] สิ่งเดียวที่ฉันสามารถคิดซึ่งไม่ได้อยู่ใน JSON เป็นNamespaces XML คำถามคือเมื่อพิจารณาการทำแผนที่นี้และการพิจารณาว่า JSON นั้นมีน้ำหนักเบามากในการทำแผนที่นี้เราสามารถมองเห็นโลกในอนาคต (หรืออย่างน้อยก็ในความคิดทางทฤษฎีเกี่ยวกับโลก) โดยปราศจาก XML แต่ JSON ทำทุกอย่าง เราสามารถใช้ JSON ได้ทุกที่ที่ใช้ XML หรือไม่ PS: โปรดทราบว่าผมเคยเห็นนี้คำถาม มันเป็นสิ่งที่แตกต่างอย่างสิ้นเชิงจากสิ่งที่ฉันถามที่นี่ ดังนั้นโปรดอย่าพูดถึงที่ซ้ำกัน
78 xml  json 

22
ฉันจะโน้มน้าวให้เพื่อน devs ของฉันเป็นต้องการที่จะเพิ่มความคิดเห็นไปยังรหัสที่มากระทำได้อย่างไร
ฉันรู้ว่าการโค่นล้ม (สิ่งที่เราใช้ในที่ทำงาน) สามารถกำหนดค่าให้ต้องแสดงความคิดเห็นในการกระทำ แต่ฉันไม่ได้อยู่ในตำแหน่งที่มีอำนาจเพียงแค่เปิดใช้งาน ฉันรู้ว่าฉันเหตุผลสำหรับการแสดงความคิดเห็นกระทำของฉันคือเพราะมันจะเป็นประโยชน์ถ้าเพียง แต่เป็นหน่วยความจำที่วิ่งได้อย่างรวดเร็วเข้าใจเหตุผลที่อยู่เบื้องหลังการกระทำ อย่างไรก็ตามนี่ดูเหมือนจะไม่เพียงพอที่จะต่อสู้กับคำตอบทั้งสองที่ฉันได้รับเสมอ: ใช้เวลานานเกินไปและฉันแค่ต้องการเปลี่ยนแปลงของฉันเป็น repo ง่ายพอที่จะดูความแตกต่าง ฉันยังแสดงให้พวกเขาเห็นคุณค่าของการเพียงแค่ใส่ ID ปัญหา JIRA และวิธีการเชื่อมโยงกับปัญหาโดยอัตโนมัติ แต่ก็ยังไม่มีลูกเต๋ากับพวกเขา ที่เลวร้ายที่สุดของทุกคนที่สามารถโทรออกอยู่ในค่ายเดียวกัน: ไม่ต้องการที่จะรำคาญและจะดีกับมองหาที่ diffs ฉันรู้ว่าเป็นสิ่งที่ถูกต้องที่จะทำ แต่ฉันจะทำให้พวกเขาเห็นแสงสว่างได้อย่างไร แม้ว่าฉันจะไม่สามารถโน้มน้าวเพื่อนร่วมงานของฉันได้ฉันจะโน้มน้าวผู้บริหารได้อย่างไรว่ามันเป็นสิ่งที่ถูกต้องที่จะทำเพื่อธุรกิจ

20
การแทนที่รหัสที่ได้รับการปรับปรุงด้วยรหัสที่อ่านได้นั้นเป็นเรื่องปกติหรือไม่
บางครั้งคุณพบสถานการณ์ที่คุณต้องขยาย / ปรับปรุงบางรหัสที่มีอยู่ คุณจะเห็นว่ารหัสเก่านั้นผอมมาก แต่มันก็ยากที่จะขยายและใช้เวลาในการอ่าน มันเป็นความคิดที่ดีที่จะแทนที่ด้วยรหัสที่ทันสมัย? ก่อนหน้านี้ฉันชอบวิธีการแบบลีน แต่ตอนนี้ฉันคิดว่ามันจะดีกว่าถ้าเสียสละจำนวนมากเพื่อเพิ่มประสิทธิภาพให้กับ abstractions ที่สูงขึ้นอินเตอร์เฟสที่ดีขึ้นและโค้ดที่อ่านได้และสามารถขยายได้มากขึ้น คอมไพเลอร์ดูเหมือนว่าจะเริ่มดีขึ้นเช่นกันดังนั้นสิ่งต่าง ๆ เช่นstruct abc = {}กลายเป็นเงียบ ๆmemset, shared_ptrs ค่อนข้างผลิตรหัสเดียวกันเป็นตัวชี้ดิบ twiddling, แม่แบบทำงานได้ดีสุดเพราะพวกเขาผลิตรหัสซุปเปอร์ลีนและอื่น ๆ แต่ถึงกระนั้นบางครั้งคุณก็เห็นอาร์เรย์ตามสแต็กและฟังก์ชั่น C เก่าที่มีตรรกะคลุมเครือและมักจะไม่ได้อยู่ในเส้นทางที่สำคัญ เป็นความคิดที่ดีที่จะเปลี่ยนรหัสดังกล่าวถ้าคุณต้องสัมผัสชิ้นส่วนเล็ก ๆ ด้วยวิธีใด?

3
เหตุใดผู้คนจึงเลือกใช้ใบอนุญาต MIT แทน BSD ถ้า "คำสั่งไม่รับรอง" ของ BSD เป็นความคิดที่ดี? [ปิด]
ตามคำถามนี้และมันตอบกลับ วัตถุประสงค์ของ "คำสั่งไม่รับรอง" ในใบอนุญาต BSD ใหม่คืออะไร? ดูเหมือนฉลาดกว่าที่จะเลือกใบอนุญาต BSD เหนือ MIT เพื่อป้องกันไม่ให้ผู้อื่นใช้ชื่อของคุณในแบบที่ไม่ต้องการ หากเป็นเช่นนั้นทำไมผู้คนถึงเลือกรับใบอนุญาต MIT แทนใบอนุญาต BSD

10
ใช้ไลบรารีของบุคคลที่สาม - ใช้ wrapper เสมอหรือไม่
โครงการส่วนใหญ่ที่ฉันเกี่ยวข้องกับการใช้ส่วนประกอบโอเพ่นซอร์สหลาย ๆ ตามหลักการทั่วไปเป็นความคิดที่ดีเสมอหรือไม่ที่จะหลีกเลี่ยงการผูกส่วนประกอบทั้งหมดของรหัสกับห้องสมุดบุคคลที่สามและแทนที่จะใช้กระดาษห่อหุ้มห่อหุ้มเพื่อป้องกันความเจ็บปวดจากการเปลี่ยนแปลง ตัวอย่างโครงการ PHP ส่วนใหญ่ของเราโดยตรงใช้ log4php เป็นเฟรมเวิร์กการบันทึกนั่นคือยกตัวอย่างผ่าน \ Logger :: getLogger () พวกมันใช้ -> info () หรือ -> warn () วิธีอื่น ๆ ในอนาคต อย่างไรก็ตามกรอบการบันทึกข้อมูลสมมุติฐานอาจปรากฏขึ้นซึ่งจะดีกว่าในบางวิธี โครงการทั้งหมดที่เข้าคู่กับลายเซ็นเมธอด log4php จะต้องเปลี่ยนแปลงในหลาย ๆ แห่งเพื่อให้เหมาะสมกับลายเซ็นใหม่ สิ่งนี้จะส่งผลกระทบอย่างกว้างขวางต่อ codebase และการเปลี่ยนแปลงใด ๆ อาจเป็นปัญหาได้ ในการพิสูจน์โค้ดใหม่ในอนาคตจากสถานการณ์ประเภทนี้ฉันมักจะพิจารณา (และบางครั้งใช้) คลาส wrapper เพื่อห่อหุ้มฟังก์ชั่นการบันทึกและทำให้ง่ายขึ้นแม้ว่าจะไม่เข้าใจผิดเพื่อเปลี่ยนวิธีการบันทึกในอนาคตโดยมีการเปลี่ยนแปลงน้อยที่สุด ; รหัสเรียกเสื้อคลุม, เสื้อคลุมผ่านการเรียกร้องให้กรอบการเข้าสู่ระบบแบบหวือหวา โปรดจำไว้ว่ามีตัวอย่างที่ซับซ้อนมากขึ้นกับห้องสมุดอื่น ๆ ฉันเป็นวิศวกรรมมากเกินไปหรือนี่เป็นข้อควรระวังที่ชาญฉลาดในกรณีส่วนใหญ่? แก้ไข: ข้อควรพิจารณาเพิ่มเติม - การใช้การฉีดพึ่งพาและการทดสอบสองเท่าต้องการให้เราสรุป …

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