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

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

9
ทำไม PHP Devs หลายคนเกลียดการใช้ isset () และ / หรือฟังก์ชั่นการป้องกันที่คล้ายกันของ PHP อย่างใดอย่างหนึ่งเช่น empty ()
ใน stackoverflow ฉันเห็นปัญหานี้หมดไปตลอดเวลา: E_NOTICE? == E_DEBUG หลีกเลี่ยง isset () และ @ พร้อม error_handler ที่ซับซ้อนยิ่งขึ้น วิธีการตั้งค่า PHP ไม่ให้ตรวจสอบการเลิกค้นหาดัชนีสำหรับ $ _GET เมื่อ E_NOTICE เปิดอยู่ วิธีหยุด PHP จากการบันทึกข้อผิดพลาด PHP Notice ฉันจะปิดประกาศ PHP 5.3 ดังกล่าวได้อย่างไร แม้แต่Pekka (ผู้ที่ให้คำแนะนำ PHP ที่เป็นของแข็งจำนวนมาก) ก็เจอกับE_NOTICEสัตว์ประหลาดที่หวั่นกลัวและหวังว่าจะได้ทางออกที่ดีกว่าการใช้isset(): isset () และเปล่า () ทำให้โค้ดน่าเกลียด โดยส่วนตัวแล้วฉันใช้isset()และempty()ในหลาย ๆ ที่เพื่อจัดการการไหลของแอปพลิเคชันของฉัน ตัวอย่างเช่น: public function do_something($optional_parameter = NULL) …

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

11
การใช้ภาษาที่ บริษัท ของคุณไม่รองรับสำหรับงานบางอย่างใช่ไหม
ฉันทำงานให้กับ บริษัท ที่รองรับหลายภาษา: COBOL, VB6, C # และ Java ฉันใช้ภาษาเหล่านั้นสำหรับงานหลักของฉัน แต่ฉันมักพบว่าตัวเองเขียนโปรแกรมเล็ก ๆ น้อย ๆ (เช่นสคริปต์) ใน Python เพราะฉันพบว่ามันเป็นเครื่องมือที่ดีที่สุดสำหรับงานประเภทนั้น ตัวอย่างเช่นนักวิเคราะห์ให้ไฟล์ CSV ที่ซับซ้อนแก่ฉันเพื่อเติมข้อมูลบางตาราง DB ดังนั้นฉันจะใช้ Python ในการแยกวิเคราะห์และสร้างสคริปต์ DB มีปัญหาอะไร? ปัญหาหลักที่ฉันเห็นคือบางส่วนของสคริปต์รวดเร็วและสกปรกเหล่านี้กำลังได้รับความสำคัญอย่างช้าๆและ: บริษัท ของฉันไม่รองรับ Python พวกเขาไม่ได้ควบคุมเวอร์ชัน (ฉันสำรองข้อมูลไว้ในอีกทางหนึ่ง) เพื่อนร่วมงานของฉันไม่รู้จัก Python นักวิเคราะห์เริ่มอ้างอิงจากอีเมล ("เปิดสคริปต์ที่ส่งออก ... ") ดังนั้นพวกเขาจึงต้องการบ่อยกว่าที่ฉันคิดไว้ในตอนแรก ฉันควรเพิ่มว่าสคริปต์เหล่านี้เป็นเพียงสาธารณูปโภคที่ไม่ได้เป็นส่วนหนึ่งของโครงการหลัก พวกเขาเพียงช่วยในการทำงานที่ไม่สำคัญในเวลาที่น้อยลง สำหรับงานเล็ก ๆ ของฉันพวกเขาช่วยได้มาก กล่าวโดยย่อถ้าฉันเป็นผู้ชนะลอตเตอรีที่ประสบอุบัติเหตุผู้ร่วมงานของฉันจะต้องทำให้โครงการมีชีวิตโดยปราศจากสคริปต์เหล่านั้น พวกเขาจะใช้เวลามากขึ้นในการแก้ไขข้อผิดพลาด CSV ด้วยมือตัวอย่างเช่น นี่เป็นสถานการณ์ทั่วไปหรือไม่ …

10
เหตุใดโปรแกรมเมอร์ใหม่จึงไม่สนใจข้อความแสดงข้อผิดพลาดของคอมไพเลอร์ / ข้อความแสดงข้อยกเว้นรันไทม์ [ปิด]
ฉันคิดว่าเราทุกคนเห็นสิ่งนี้แล้ว ผู้เริ่มต้นถามคำถามเกี่ยวกับ Stack Overflow ที่เป็นไปตามเค้าร่างพื้นฐาน ... ฉันกำลังพยายามทำ(คำอธิบายเป้าหมายที่คลุมเครือมาก)แต่มันไม่ทำงาน / ฉันได้รับข้อผิดพลาด / ข้อยกเว้น กรุณาช่วย! มันไม่แปลกที่หลายคนคิดว่าไม่จำเป็นต้องวางข้อความแสดงข้อผิดพลาด? ฉันสงสัยว่าจิตวิทยาของสิ่งนี้คืออะไร เกี่ยวกับข้อความแสดงข้อผิดพลาดที่ทำให้คนเริ่มคิดว่าพวกเขาไร้ประโยชน์และไม่คุ้มค่าที่จะให้ความสนใจอะไร คำตอบที่ฉันค้นหาไม่ใช่ “ พวกเขาไม่เข้าใจข้อความแสดงข้อผิดพลาด” นั่นไม่ได้อธิบายว่าทำไมพวกเขาถึงไม่บอกคนอื่นที่อาจเข้าใจ

14
มีการจัดการฐานรหัสที่ไม่ใช่ OO ขนาดใหญ่เท่าใด
ฉันมักจะเห็นสิ่งที่เป็นนามธรรมเป็นคุณสมบัติที่มีประโยชน์มากที่ OO มีให้สำหรับการจัดการโค้ด แต่จะมีการจัดการฐานรหัสที่ไม่ใช่ OO ขนาดใหญ่ได้อย่างไร หรือว่ากลายเป็น " Big Ball of Mud " ในที่สุด? อัปเดต: ดูเหมือนว่าทุกคนกำลังคิดว่า 'นามธรรม' เป็นเพียงการทำให้เป็นโมดูลหรือการซ่อนข้อมูล แต่ IMHO ก็หมายถึงการใช้ 'Abstract Classes' หรือ 'Interfaces' ซึ่งเป็นสิ่งจำเป็นสำหรับการพึ่งพาการฉีดและการทดสอบ รหัสฐานที่ไม่ใช่ OO จะจัดการสิ่งนี้ได้อย่างไร นอกจากนี้ยังมีสิ่งที่เป็นนามธรรมนอกจากนี้การห่อหุ้มยังช่วยในการจัดการฐานรหัสขนาดใหญ่ในขณะที่มันกำหนดและ จำกัด ความสัมพันธ์ระหว่างข้อมูลและฟังก์ชั่น ด้วย C มันเป็นไปได้มากที่จะเขียนโค้ดหลอก -OO ฉันไม่รู้เกี่ยวกับภาษาที่ไม่ใช่ OO มากนัก เป็นวิธีจัดการฐานรหัส C ขนาดใหญ่หรือไม่

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

6
คุณใช้เวลาเท่าไหร่ในการทดสอบหน่วย
ใน บริษัท ที่ฉันเคยทำงานให้ผู้บริหารยืนยันว่าการครอบคลุมโค้ดด้วยการทดสอบหน่วยต้องเป็น 99% หรือมากกว่า ส่งผลให้มีการเขียนการทดสอบมากกว่าโค้ด เราใช้เวลา 3 วันในการเขียนแบบทดสอบสำหรับชั้นเรียนเดียวที่ต้องใช้เวลาทั้งวัน อย่างไรก็ตามฉันได้เรียนรู้เกี่ยวกับ TDD เครื่องมือทดสอบแนวปฏิบัติและอื่น ๆ มากมาย ใน บริษัท ที่ฉันทำงานหลังจากนั้นการทดสอบหน่วยเป็นสิ่งที่ไม่รู้จัก มันเป็นสิ่งที่บางคนอาจเคยได้ยินมาก่อน ฉันพยายามที่จะแนะนำให้รู้จักกับแนวคิดของการทดสอบหน่วย แต่ไม่มีผล ตอนนี้เป็นของตนเองผมสงสัย - วิธีการมากเวลามันจำเป็นที่จะต้องใช้จ่ายในการทดสอบหน่วย? การพัฒนาส่วนใหญ่เป็น iPhone / Android ส่วนใดของรหัสที่ควรครอบคลุมในการทดสอบ

7
ทางเลือกที่เร็วกว่าไปยัง CRC คืออะไร
ฉันกำลังส่งข้อมูลจาก dsPIC ไปยังพีซีและฉันทำ CRC 8 บิตไปยังบล็อกขนาด 512 ไบต์ทุกบล็อกเพื่อให้แน่ใจว่าไม่มีข้อผิดพลาด เมื่อเปิดใช้งานรหัส CRC ของฉันฉันจะได้รับประมาณ 33KB / s โดยที่ฉันไม่ได้รับ 67KB / s อะไรคืออัลกอริธึมการตรวจหาข้อผิดพลาดทางเลือกในการตรวจสอบที่จะเร็วขึ้น

9
คุณคิดอย่างไรกับ Periods / Full Stops ในคอมเม้นท์โค้ด [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเห็นสิ่งนี้ถามใน SO Tavernดังนั้นฉันจึงโพสต์คำถามที่นี่ ฉันคิดว่ามันเป็นคำถามที่น่าสนใจ (แน่นอนว่ามันไม่ได้อยู่ในนั้น แต่ฉันคิดว่ามันโอเคที่นี่) คุณเพิ่มจุด (หรือตามที่ OP เขียนว่า "full stop") ในความคิดเห็นเกี่ยวกับโค้ดของคุณหรือไม่ เพื่อให้มันเกี่ยวข้องทำไม ?

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

2
ทำไมการส่งผ่านฟังก์ชั่นที่ไม่ระบุชื่อขนาดใหญ่เป็นข้อโต้แย้งไปยังฟังก์ชั่นอื่น ๆ จึงได้รับการยอมรับใน JavaScript
ฉันมีความเห็น (ซึ่งฉันแน่ใจว่าจะแบ่งปันโดย) ว่าการส่งผ่านฟังก์ชั่นนิรนามซึ่งมีโค้ดมากกว่าสองสามบรรทัดเนื่องจากข้อโต้แย้งไปยังฟังก์ชั่นอื่น ๆ นั้นส่งผลกระทบต่อความสามารถในการอ่านและจัดทำเอกสารด้วยตนเองอย่างรุนแรง จะดีกว่าสำหรับทุกคนที่มีโอกาสใช้รหัสเพื่อประกาศฟังก์ชั่นที่มีชื่อ หรืออย่างน้อยก็กำหนดฟังก์ชั่นที่ไม่ระบุชื่อให้กับตัวแปรก่อนที่จะประกาศฟังก์ชั่นหลัก อย่างไรก็ตามไลบรารีJavaScriptจำนวนมาก(jQuery, d3.js / NVD3.js) เพียงแค่ให้ตัวอย่างสองสามตัวอย่างใช้ฟังก์ชันขนาดใหญ่ด้วยวิธีนี้ ทำไมจึงเป็นที่ยอมรับอย่างกว้างขวางใน JavaScript? มันเป็นสิ่งที่เกี่ยวกับวัฒนธรรมหรือมีข้อได้เปรียบที่ฉันขาดไปซึ่งจะทำให้การใช้งานเป็นที่นิยมมากกว่าการประกาศฟังก์ชั่นที่มีชื่อ?

5
ทำไมการผสาน O (log n)
การรวมกันเป็นอัลกอริทึมการหารและการพิชิตและเป็น O (บันทึก n) เนื่องจากอินพุตถูกลดลงครึ่งหนึ่งซ้ำ ๆ แต่ไม่ควรเป็น O (n) เพราะแม้ว่าอินพุตจะลดลงครึ่งหนึ่งแต่ละลูปแต่ละไอเท็มจะต้องมีการวนซ้ำเพื่อทำการสลับในแต่ละอาร์เรย์ครึ่งหนึ่งหรือไม่ นี่คือความหมายเชิง O (n) ในใจของฉัน หากเป็นไปได้โปรดให้ตัวอย่างและอธิบายวิธีนับการดำเนินการอย่างถูกต้อง ฉันยังไม่ได้เขียนอะไรขึ้น แต่ฉันได้ดูอัลกอริทึมออนไลน์ ฉันได้แนบ gif ของวิกิพีเดียที่ใช้เพื่อแสดงให้เห็นว่าการผสานทำงานอย่างไร
27 algorithms  big-o 

1
เข้าร่วมกับภายในเข้าร่วมและเต็มรูปแบบเข้าร่วมด้านนอก
ฉันรู้ว่ามีความแตกต่างระหว่างINNER JOINและFULL OUTER JOINผมสามารถมองเห็นได้ แต่สิ่งที่แตกต่างระหว่างทั้งสองต่อไปนี้: JOIN ... ON...และINNER JOIN...ON...และยังคงยังJOIN...ON...VSFULL OUTER JOIN...ON... เหตุผลที่เป็นฉันคิดว่าอาจจะใช้เพียงแค่JOINmessing up แบบสอบถามที่ฉันทำงานที่มีการโพสต์บนดังนั้นเชื่อมโยงไปยังคำถามที่นี่ ดังนั้นโดยพื้นฐานแล้วอะไรคือความแตกต่างทางไวยากรณ์ระหว่างชุดปฏิบัติการจริงของตัวเอง ขอขอบคุณ,
27 sql  sql-server 

3
เทคนิคที่ดีที่สุดสำหรับ AI ของเกมไพ่
ฉันพยายามพัฒนา AI สำหรับเกมไพ่และฉันติดอยู่กับเทคนิค / อัลกอริทึมที่ฉันควรใช้ นี่คือสมมติฐานบางอย่างเกี่ยวกับเกม: หลังจากแจกการ์ดให้ผู้เล่นแล้วจะไม่มีการสุ่ม ฉันหมายถึงที่นี่ที่ผู้เล่นทุกคนสามารถเลือกไพ่ที่เขาเล่น แต่ไม่มีกระบวนการสุ่มเกิดขึ้นเมื่อแจกการ์ดในตอนเริ่มเกม มีข้อ จำกัด เกี่ยวกับการ์ดที่สามารถเล่นได้เมื่อเล่นการ์ดแล้ว ผู้เล่นที่ชนะเคล็ดลับเล่นก่อน เช่นผู้เล่น 1 เล่นไพ่ผู้เล่น 2 เล่นไพ่และชนะ จากนั้นผู้เล่น 2 เล่นไพ่แล้วเล่นผู้เล่น 1 คน ฉันรู้คำแนะนำ / กฎมากมาย (เช่นถ้าฉันรู้ว่าผู้เล่นมีไพ่ A, B, C ดังนั้นฉันควรเล่น D) ซึ่งช่วยให้ฉันชนะในเกม ดังนั้นก่อนอื่นฉันต้องการใช้เครือข่ายแบบเบย์เพื่ออธิบายกฎเหล่านั้น ปัญหาคือว่าฉันไม่ทราบถึงความน่าจะเป็นที่จะมอบหมาย แต่ฉันสามารถคำนวณฮิวริสติกได้โดยใช้ประวัติของเกมที่เล่น (ต่อมนุษย์) ปัญหาที่สองมันเป็นไปได้มากที่ฉันไม่รู้กฎทั้งหมดและมีกฎเกณฑ์บางอย่างที่ AI ต้องการเพื่อค้นหาการเล่นที่ดีที่สุด ฉันไม่แน่ใจว่านี่จะเป็นวิธีที่ดีในการพัฒนา AI สำหรับเกมการ์ดดังกล่าวหรือไม่? ฉันยังสงสัยด้วยว่ามีเทคนิคอื่น ๆ ที่เหมาะสมกับปัญหาหรือไม่ ตัวอย่างเช่นฉันได้ดู minimax (อาจจะมีอัลกอริทึมการตัดแต่งกิ่ง) แต่จะเป็นตัวเลือกที่ดีสำหรับปัญหานี้หรือไม่? …

4
อะไรเป็นตัวกำหนดว่าฟังก์ชั่น Javascript ใดบ้างที่ถูกบล็อกเทียบกับการไม่บล็อก?
ฉันได้ทำ Javascript บนเว็บ (วานิลลา JS, jQuery, Backbone ฯลฯ ) มาหลายปีแล้วและเมื่อไม่นานมานี้ฉันได้ทำงานกับ Node.js ฉันใช้เวลาสักครู่เพื่อหยุดการเขียนโปรแกรม "non-blocking" แต่ตอนนี้ฉันคุ้นเคยกับการใช้ callback สำหรับการดำเนินการ IO และอะไรก็ตาม ฉันเข้าใจว่า Javascript นั้นเป็นเธรดเดียวโดยธรรมชาติ ฉันเข้าใจแนวคิดของโหนด "คิวเหตุการณ์" สิ่งที่ฉันไม่เข้าใจคือสิ่งที่กำหนดว่าการดำเนินการจาวาสคริปต์แต่ละรายการนั้นคือ "การบล็อก" กับ "การไม่บล็อก" ฉันจะทราบได้อย่างไรว่าการดำเนินการใดที่ฉันสามารถพึ่งพาเพื่อสร้างเอาต์พุตแบบซิงโครนัสสำหรับฉันที่จะใช้ในโค้ดในภายหลังและอันไหนที่ฉันจะต้องผ่านการเรียกกลับเพื่อให้ฉันสามารถประมวลผลเอาท์พุทได้ มีรายการฟังก์ชั่น Javascript ที่อื่นที่ไม่ตรงกัน / ไม่บล็อกและรายการของฟังก์ชันที่ซิงโครนัส / บล็อกหรือไม่ อะไรที่ทำให้แอพ Javascript ของฉันไม่เป็นหนึ่งในการแข่งขันที่ยิ่งใหญ่ ฉันรู้ว่าการดำเนินการที่ใช้เวลานานเช่นการปฏิบัติการ IO ในการดำเนินงาน Node และ AJAX บนเว็บต้องการให้มีการแบบอะซิงโครนัสดังนั้นจึงใช้การเรียกกลับ - แต่ใครจะพิจารณาว่าคุณสมบัติใดเป็น "เวลานาน"? มีการจัดเรียงของทริกเกอร์ภายในการดำเนินการเหล่านี้ที่ลบออกจาก "คิวเหตุการณ์" …

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