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

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

15
TDD Red-Green-Refactor และหาก / วิธีการทดสอบวิธีการที่เป็นส่วนตัว
เท่าที่ฉันเข้าใจคนส่วนใหญ่ดูเหมือนจะยอมรับว่าวิธีการส่วนตัวไม่ควรทดสอบโดยตรง แต่ผ่านวิธีการสาธารณะใด ๆ เรียกพวกเขา ฉันสามารถเห็นประเด็นของพวกเขา แต่ฉันมีปัญหาบางอย่างกับเรื่องนี้เมื่อฉันพยายามติดตาม "สามกฏของ TDD" และใช้วงจร "สีแดง - เขียว - refactor" ฉันคิดว่าตัวอย่างอธิบายได้ดีที่สุด: ตอนนี้ฉันต้องการโปรแกรมที่สามารถอ่านไฟล์ (ที่มีข้อมูลคั่นด้วยแท็บ) และกรองคอลัมน์ทั้งหมดที่มีข้อมูลที่ไม่ใช่ตัวเลข ฉันคิดว่าอาจมีเครื่องมือง่ายๆที่มีอยู่แล้วในการทำเช่นนี้ แต่ฉันตัดสินใจที่จะใช้มันตั้งแต่ต้นตัวเองเพราะฉันคิดว่ามันอาจเป็นโครงการที่ดีและสะอาดสำหรับฉันที่จะได้รับการฝึกฝนด้วย TDD ดังนั้นก่อนอื่นฉัน "ใส่หมวกสีแดง" นั่นคือฉันต้องการการทดสอบที่ล้มเหลว ฉันคิดว่าฉันจะต้องใช้วิธีการที่พบเขตข้อมูลที่ไม่ใช่ตัวเลขทั้งหมดในบรรทัด ดังนั้นฉันจึงเขียนการทดสอบอย่างง่ายแน่นอนว่ามันไม่สามารถรวบรวมได้ทันทีดังนั้นฉันจึงเริ่มเขียนฟังก์ชั่นของตัวเองและหลังจากผ่านไปมาสองรอบ (แดง / เขียว) ฉันมีฟังก์ชั่นการทำงานและการทดสอบที่สมบูรณ์ ถัดไปฉันใช้ฟังก์ชัน "gatherNonNumericColumns" ที่อ่านไฟล์ครั้งละหนึ่งบรรทัดและเรียก "findNonNumericFields" ของฉัน - ฟังก์ชันในแต่ละบรรทัดเพื่อรวบรวมคอลัมน์ทั้งหมดที่ต้องถูกลบออกในที่สุด สองรอบสีแดงสีเขียวและฉันเสร็จแล้วมีอีกครั้งฟังก์ชั่นการทำงานและการทดสอบที่สมบูรณ์ ตอนนี้ฉันคิดว่าฉันควร refactor เนื่องจากวิธีการของฉัน "findNonNumericFields" ได้รับการออกแบบเพราะฉันคิดว่าฉันจะต้องใช้เมื่อใช้งาน "gatherNonNumericColumns" ดูเหมือนว่าฉันจะมีเหตุผลที่จะให้ "findNonNumericFields" เป็นแบบส่วนตัว อย่างไรก็ตามนั่นจะเป็นการทำลายการทดสอบครั้งแรกของฉันเนื่องจากพวกเขาจะไม่สามารถเข้าถึงวิธีการทดสอบได้อีกต่อไป ดังนั้นฉันจบลงด้วยวิธีการส่วนตัวและชุดทดสอบที่ทดสอบ เนื่องจากผู้คนจำนวนมากให้คำแนะนำว่าไม่ควรทำการทดสอบวิธีส่วนตัวจึงรู้สึกเหมือนว่าฉันได้ทาสีตัวเองให้เป็นมุมตรงนี้ …

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

9
ขอแนะนำให้พนักงานสร้างบัญชี GitHub 'ทำงาน' หรือไม่
ฉันย้ายที่เก็บ Git ของ บริษัท ทั้งหมดไปที่ GitHub และตอนนี้ฉันต้องการเพิ่มพนักงานให้กับโครงการ เนื่องจากพนักงานส่วนใหญ่มีบัญชี GitHub ส่วนบุคคลอยู่แล้วฉันจึงสงสัยว่าฉันควรขอให้พวกเขาสร้างบัญชี GitHub ที่ทำงานหรือไม่ เหตุผลที่ฉันคิดว่าการทำเช่นนี้คือการลดโอกาสในการเข้าถึงฐานรหัสของเราโดยไม่ได้รับอนุญาตเนื่องจากบัญชีส่วนบุคคลของพวกเขาอาจได้รับการเผยแพร่ผ่านกิจกรรมส่วนตัวของพวกเขาในเว็บไซต์ซึ่งเป็นการเพิ่มโอกาสในการโจมตีเป้าหมาย นอกจากนี้หากบัญชีส่วนบุคคลของพวกเขาถูกบุกรุกมันจะไม่หมายความว่านักจี้สามารถเข้าถึงรหัส บริษัท ทั้งหมดได้ ตั้งแต่นี้จะนำภาระในการรักษาบัญชีสองบัญชีสำหรับพนักงานฉันสงสัยว่ามันเป็นวิธีการที่ถูกต้องและไม่ว่ามันจะทำให้รู้สึก อัปเดต ขอบคุณสำหรับข้อมูลเชิงลึกที่มีประโยชน์ทั้งหมด ฉันจะไม่ตั้งคำตอบให้เป็นที่ยอมรับเนื่องจากธรรมชาติของคำถาม / คำตอบและเนื่องจากฉันได้รับคะแนนที่ดีที่สุดจากคำตอบที่แตกต่างกัน ฉันตัดสินใจที่จะก้าวไปข้างหน้าด้วยวิธีนี้: ฉันจะเตือนพนักงานว่าการแจ้งเตือนทางอีเมลที่เกี่ยวข้องกับงาน GitHub นั้นจะต้องถูกส่งไปยังบัญชีอีเมลการทำงานของพวกเขาด้วยเหตุผลจริง ดังนั้นจึงเหมาะสมกว่าที่จะสร้างบัญชี GitHub ที่ทำงาน หากพวกเขายินดีที่จะใช้บัญชี GitHub ส่วนตัวของพวกเขาและเชื่อมต่อกับบัญชีอีเมลที่ทำงานของพวกเขานั่นก็ดี ไม่ว่าในกรณีใดพนักงานจะต้องตกลงในรูปแบบเป็นลายลักษณ์อักษรกับเงื่อนไขจำนวนหนึ่งที่เกี่ยวข้องกับการใช้ GitHub สิ่งเหล่านี้เกี่ยวข้องกับความปลอดภัยของบัญชี: เลือกรหัสผ่านที่ปลอดภัยโดยใช้เครื่องสร้างรหัสผ่านแบบสุ่มที่ปลอดภัยซึ่งไม่ได้ใช้กับบัญชีอื่นไม่เข้าถึง GitHub ผ่านคอมพิวเตอร์ที่ไม่ได้เป็นเจ้าของหรือเป็นผู้บริหารเป็นต้นเมื่อสิ้นสุดวันพนักงานจะต้อง ตัดสินใจด้วยตัวเองว่าบัญชีงานนั้นเหมาะสมกับพวกเขาหรือไม่
91 github 

5
ข้อดีของการเลือกการเข้ารหัส ASCII ผ่าน UTF-8 คืออะไร
อักขระทั้งหมดใน ASCII สามารถเข้ารหัสได้โดยใช้ UTF-8 โดยไม่ต้องเพิ่มหน่วยความจำ (ทั้งคู่ต้องใช้หน่วยเก็บข้อมูลเป็นไบต์) UTF-8 มีประโยชน์เพิ่มเติมจากการสนับสนุนอักขระนอกเหนือจาก "ASCII-characters" หากเป็นกรณีที่ว่าทำไมเราจะเคยเลือกการเข้ารหัส ASCII กว่า UTF-8? มีกรณีการใช้งานเมื่อเราจะเลือก ASCII แทน UTF-8 หรือไม่?

15
อะไรทำให้ C เป็นที่นิยมในยุคของ OOP [ปิด]
ฉันเขียนโค้ดจำนวนมากทั้งใน C และ C ++ แต่ไม่ได้คาดหวังว่า C จะเป็นภาษาที่ได้รับความนิยมอันดับสองรองจาก Java เล็กน้อย ดัชนีชุมชนการเขียนโปรแกรม TIOBE ฉันอยากรู้ว่าทำไมในยุค OOP นี้ C ยังคงเป็นที่นิยม? โปรดทราบว่าภาษาการเขียนโปรแกรมยอดนิยม 4 จาก 5 อันดับแรกคือภาษา "ทันสมัย" ซึ่งเป็นภาษาเชิงวัตถุ ตอนนี้ฉันยอมรับว่าคุณสามารถใช้ OOP ใน C ได้บ้าง แต่มันค่อนข้างเจ็บปวดและไม่เหมาะสม (อย่างน้อยก็เมื่อเทียบกับ C ++ ฉันเดา) ดังนั้นอะไรที่ทำให้ C เป็นที่นิยม มันมีประสิทธิภาพหรือไม่ เป็นระดับต่ำ ห้องสมุดส่วนใหญ่ที่มีอยู่แล้วหรืออย่างอื่น?

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

12
วลี“ ซอฟต์แวร์สามารถเปลี่ยนฮาร์ดแวร์ได้” หมายถึงอะไร
การเรียนหลักสูตรผู้เริ่มต้นบนอินเทอร์เฟซฮาร์ดแวร์ / ซอฟต์แวร์และระบบปฏิบัติการมักจะเกิดหัวข้อว่าจะเป็นการดีกว่าถ้าจะแทนที่ส่วนฮาร์ดแวร์บางส่วนด้วยซอฟต์แวร์และในทางกลับกัน ฉันไม่สามารถเชื่อมต่อได้

5
ด้วยบริการเหล่านี้ทั้งหมดฉันจะไม่เป็นโลหิตจางได้อย่างไร
เราจะวาดเส้นแบ่งระหว่างการมอบหมายและการห่อหุ้มของตรรกะทางธุรกิจได้อย่างไร สำหรับฉันดูเหมือนว่ายิ่งเรามอบหมายมากเท่าไหร่เราก็ยิ่งมีโลหิตจางมากขึ้นเท่านั้น อย่างไรก็ตามการมอบหมายยังส่งเสริมการใช้ซ้ำและเงินต้นแห้ง ดังนั้นสิ่งที่เหมาะสมในการมอบหมายและสิ่งที่ควรอยู่ในรูปแบบโดเมนของเรา ใช้ความกังวลต่อไปนี้เป็นตัวอย่าง: การอนุญาต วัตถุโดเมนควรรับผิดชอบในการรักษากฎการควบคุมการเข้าถึง (เช่นคุณสมบัติ CanEdit) หรือควรมอบให้แก่ส่วนประกอบ / บริการอื่นที่รับผิดชอบการจัดการการเข้าถึงเช่น IAuthorizationService.CanEdit (วัตถุ)? หรือมันควรจะเป็นการรวมกันของทั้งสอง? บางทีวัตถุโดเมนมีคุณสมบัติ CanEdit ซึ่งมอบหมายให้กับ IAuthorizationService ภายในเพื่อทำงานจริงหรือไม่ การตรวจสอบ การสนทนาเช่นเดียวกับข้างต้นเกี่ยวข้องกับการตรวจสอบ ใครเป็นผู้ดูแลกฎและใครรับผิดชอบในการประเมินกฎเหล่านั้น ในอีกด้านหนึ่งสถานะของวัตถุควรเป็นของวัตถุนั้นและความถูกต้องเป็นสถานะ แต่เราไม่ต้องการที่จะเขียนรหัสที่ใช้ในการประเมินกฎสำหรับทุกโดเมนวัตถุ เราสามารถใช้การสืบทอดในกรณีนี้ ... สร้างวัตถุ คลาสของโรงงานเทียบกับวิธีการของโรงงานกับ 'newing' หากเราใช้คลาสโรงงานแยกต่างหากเราสามารถแยกและห่อหุ้มตรรกะการสร้าง แต่ด้วยค่าใช้จ่ายในการเปิดสถานะของวัตถุของเราไปยังโรงงาน สิ่งนี้สามารถจัดการได้ถ้าเลเยอร์โดเมนของเราอยู่ในชุดประกอบที่แยกจากกันโดยการเปิดเผยตัวสร้างภายในที่โรงงานใช้ แต่สิ่งนี้จะกลายเป็นปัญหาหากมีหลายรูปแบบการสร้าง และถ้าโรงงานทั้งหมดกำลังเรียกผู้สร้างที่ถูกต้องจุดของการมีโรงงานคืออะไร? วิธีการในโรงงานในคลาสกำจัดปัญหาเมื่อเปิดสถานะภายในของวัตถุ แต่เนื่องจากเป็นแบบคงที่เราจึงไม่สามารถทำลายการพึ่งพาผ่านการฉีดอินเทอร์เฟซจากโรงงานเหมือนที่เราทำได้ด้วยคลาสโรงงานแยกต่างหาก วิริยะ หนึ่งอาจโต้แย้งว่าถ้าวัตถุโดเมนของเรากำลังจะเปิดเผย CanEdit ในขณะที่มอบหมายความรับผิดชอบในการดำเนินการตรวจสอบการอนุมัติให้บุคคลอื่น (IAuthorizationService) ทำไมไม่มีวิธีการบันทึกบนวัตถุโดเมนของเราที่ทำสิ่งเดียวกัน สิ่งนี้จะช่วยให้เราสามารถประเมินสถานะภายในของวัตถุเพื่อตรวจสอบว่าการดำเนินการสามารถทำได้โดยไม่ทำลาย encapsulation หรือไม่ แน่นอนมันต้องการให้เราฉีดอินสแตนซ์ที่เก็บข้อมูลลงในวัตถุโดเมนของเราซึ่งมีกลิ่นเล็กน้อยสำหรับฉันดังนั้นเราจะเพิ่มกิจกรรมโดเมนแทนและอนุญาตให้ผู้ดำเนินการดำเนินการจัดการอย่างถาวรหรือไม่ ดูว่าฉันจะไปกับอะไร Rockford Lhotka …

19
การจัดการกับการจัดการที่ไม่เห็นคุณค่าในการปรับปรุงที่ผู้ใช้ไม่สามารถมองเห็นได้ทันที
ฉันสามารถเข้าใจแรงกดดันจากตาราง คุณต้องการทำให้ผู้ใช้ของคุณพอใจเพราะเป็นส่วนสำคัญของ บริษัท อย่างไรก็ตามมันเป็นความจริงที่การเปลี่ยนแปลงบางอย่างจะทำให้ทุกอย่างง่ายขึ้น น่าเสียดายที่การจัดการในองค์กรของฉันมีความต้านทานต่อสัญชาตญาณต่อการเปลี่ยนแปลงดังกล่าวและการต่อต้านนี้แข็งแกร่งมากจนได้รับการปรับปรุงในระยะยาว ตัวอย่างเช่น Apple เพิ่งเปิดตัวการอ้างอิงอัตโนมัติสำหรับโปรแกรม iOS นี่คือการปรับปรุงที่สำคัญในการรักษาการโทร / ปล่อยสายที่เคยใช้มาก่อน รหัสนั้นง่ายต่อการเขียนและง่ายต่อการบำรุงรักษา การเปลี่ยนแปลงตัวเองมีแนวโน้มที่จะก่อให้เกิดความผิดพลาดบางอย่าง แต่เมื่อสิ่งเหล่านี้ได้ผลจำนวนการสุ่มที่ผิดพลาดน่าจะลดลง ฉันเพิ่งพูดกับเจ้านายของฉันว่าฉันต้องการเปลี่ยนเป็นการนับการอ้างอิงอัตโนมัติ คำตอบของเขาคือเขาต้องการที่จะมีสมาธิกับการปรับปรุงที่มองเห็นได้ เป็นไปได้ว่าคำตอบนี้ได้รับแรงหนุนจากความกดดันที่เขาได้รับจากเบื้องบน - และอาจมาจาก CEO มีตัวอย่างที่คล้ายกันมากมาย เธรดทั่วไปคือสิ่งที่ต้องแก้ไข แต่ต้นทุนระยะสั้นของการแก้ไขมีมากกว่าผลประโยชน์ระยะสั้นโดยที่ "ระยะสั้น" ถูกกำหนดเป็น "ภายในไม่กี่สัปดาห์ถัดไป" ฉันจะจัดการกับสถานการณ์ได้อย่างไร แก้ไข: ขอบคุณสำหรับคำตอบ มาเรื่อย ๆ เนื่องจากมันเกี่ยวข้องกับสถานการณ์ของฉันฉันควรทำให้ชัดเจนว่าผู้จัดการและ CEO ของฉันเป็นทั้งโปรแกรมเมอร์ - แม้ว่า CEO อาจลืมไปแล้วว่าสิ่งนี้เป็นอย่างไร เห็นได้ชัดว่าโปรแกรมเมอร์ของพวกเขาถูกกดดันจากแรงกดดันอื่น ๆ

8
วิธีแก้ไขผลลัพธ์ของโปรแกรมที่คุณไม่มีซอร์สโค้ด
ใน บริษัท ของเราเรามีโปรแกรมขนาดเล็ก (.exe ขนาด 500Kb) ที่ใช้ในการคำนวณทางคณิตศาสตร์และในที่สุดมันจะแยกผลลัพธ์ออกเป็นสเปรดชีต Excel ที่เราใช้เพื่อดำเนินงานต่อไป ฉันต้องการแก้ไขคอลัมน์รูปแบบระยะห่างและเพิ่มตรรกะ VBA เป็นต้นในสเปรดชีต Excel แต่เนื่องจากพารามิเตอร์นี้ไม่สามารถกำหนดค่าได้ในโปรแกรมนั้นฉันคิดว่าวิธีเดียวที่จะแก้ไขได้คือการแยก / ย้อนกลับวิศวกร. exe ไม่มีใครรู้ในภาษาที่ตั้งโปรแกรมสิ่งเดียวที่เรารู้คือ: พัฒนามานานกว่า 20 ปีแล้ว นักพัฒนาเกษียณเมื่อ 10 ปีที่แล้ว แอปพลิเคชัน GUI รันแบบสแตนด์อโลน ขนาด 500Kb คำแนะนำใด ๆ ที่ตัวเลือกฉันต้องจัดการกับปัญหาดังกล่าว? วิศวกรรมย้อนกลับเป็นทางเลือกเดียวหรือมีแนวทางที่ดีกว่า

2
เกิดอะไรขึ้นกับการนำเข้าที่สัมพันธ์กันใน Python
ฉันเพิ่งอัพเกรดpylintเวอร์ชั่นตัวตรวจสอบ Python สไตล์ยอดนิยม มันเกิดขึ้นอย่างรวดเร็วในรหัสของฉันชี้สถานที่ที่ฉันนำเข้าโมดูลในแพ็คเกจเดียวกันโดยไม่ต้องระบุเส้นทางของแพ็คเกจทั้งหมด ข้อความแสดงข้อผิดพลาดใหม่คือ W0403 W0403: การนำเข้าสัมพัทธ์% r ควรเป็น% r ใช้เมื่อตรวจพบการนำเข้าที่สัมพันธ์กับไดเรกทอรีแพ็คเกจ ตัวอย่าง ตัวอย่างเช่นถ้าแพ็คเกจของฉันมีโครงสร้างแบบนี้: /cake /__init__.py /icing.py /sponge.py /drink และในแพ็คเกจฟองน้ำฉันเขียน: import icing แทน import cake.icing ฉันจะได้รับข้อผิดพลาดนี้ ในขณะที่ฉันเข้าใจว่าไม่ใช่ข้อความ Pylint ทั้งหมดที่มีความสำคัญเท่ากันและฉันไม่กลัวที่จะยกเลิกข้อความเหล่านั้น แต่ฉันไม่เข้าใจว่าทำไมการฝึกเช่นนี้จึงถือเป็นแนวคิดที่ไม่ดี ฉันหวังว่าบางคนสามารถอธิบายข้อผิดพลาดได้ดังนั้นฉันจึงสามารถปรับปรุงรูปแบบการเขียนรหัสได้มากกว่า (อย่างที่ฉันวางแผนจะทำในปัจจุบัน) ปิดการเตือนที่น่าเกรงขามนี้

7
วิธีการปฏิเสธการตรวจสอบรหัสที่คุณเชื่อว่าไม่จำเป็น?
ฉันอยู่ในตำแหน่งที่ฉันถูกขอให้ตรวจสอบรหัสบางอย่างที่แก้ไขปัญหาที่ฉันไม่เชื่อว่ามีอยู่ ผู้ให้บริการซึ่งเป็นผู้อาวุโสกว่าฉันยืนยันว่าการแก้ไขของเขาเป็นสิ่งจำเป็น แต่ดูเหมือนจะไม่เกินความซับซ้อนของ C ++ สำหรับฉัน ส่วนหนึ่งของกระบวนการปรับใช้ของเราคือการตรวจสอบโค้ดและในฐานะวิศวกรอันดับ 2 ใน บริษัท ขนาดเล็กฉันคาดว่าจะตรวจสอบการเปลี่ยนแปลง ฉันเชื่อว่าผู้ตรวจสอบมีหน้าที่รับผิดชอบต่อการเปลี่ยนแปลงรหัสเช่นเดียวกับรหัสต้นฉบับและฉันไม่เต็มใจที่จะยอมรับความรับผิดชอบสำหรับการเปลี่ยนแปลงนี้ คุณจะไปเกี่ยวกับการปฏิเสธรีวิวนี้อย่างไร?

13
ความเร็วที่เพิ่มขึ้นอย่างมากเป็นจริงในสภาพแวดล้อมการต่อสู้หรือไม่?
เมื่อเร็ว ๆ นี้ผู้จัดการของฉันผลักดันให้ใช้ความเร็วเป็นเป้าหมายและวัดผลการผลิต ขณะนี้เรากำลังทำงานที่ความเร็วเฉลี่ย 50 คะแนน ผู้จัดการของฉันต้องการให้เราเพิ่มขึ้น 40% เป็น 70 คะแนน (โดยไม่เพิ่มสมาชิกในทีม) หากเราไม่บรรลุเป้าหมายที่เพิ่มขึ้นเขาต้องการให้เราอธิบายเหตุผลว่าทำไม แนวคิดทั้งหมดในการวัดประสิทธิภาพของทีมด้วยความเร็วและการใช้งานเป็นเป้าหมายดูเหมือนว่าผิดสำหรับฉัน แต่ฉันพบว่ายากที่จะอธิบายว่าทำไม ความช่วยเหลือใด ๆ ทำไมจึงไม่ใช่วิธีที่ถูกต้องในการวัดและสร้างแรงจูงใจให้ผลิตภาพ?
89 agile  scrum 

16
จิตใจที่อ่อนเยาว์จำเป็นต้องเรียนรู้แนวคิดตัวชี้?
เหตุใด C master Dennis Ritchie จึงแนะนำพอยน์เตอร์ใน C และทำไมภาษาโปรแกรมอื่น ๆ เช่น VB.NET หรือ Java หรือ C # จึงกำจัดภาษาเหล่านั้น ฉันพบบางจุดใน Google และฉันต้องการฟังความคิดเห็นของคุณด้วย ทำไมพวกเขาถึงกำจัดแนวคิดของตัวชี้ในภาษาสมัยใหม่? ผู้คนพูดว่า C เป็นภาษาพื้นฐานและพอยน์เตอร์เป็นแนวคิดที่ทำให้ C มีพลังและโดดเด่นและทำให้ C ยังคงแข่งขันกับภาษาที่ทันสมัยกว่าได้ แล้วทำไมพวกเขาถึงกำจัดพอยน์เตอร์ในภาษาที่ทันสมัยกว่า คุณคิดว่าความรู้เกี่ยวกับพอยน์เตอร์ยังคงมีความสำคัญต่อโปรแกรมเมอร์ใหม่หรือไม่? ทุกวันนี้ผู้คนกำลังใช้ VB.NET หรือ Java ซึ่งสนับสนุนคุณสมบัติขั้นสูงมากกว่า C (และไม่ใช้แนวคิดตัวชี้) และหลาย ๆ คนอย่างที่ฉันเห็นในตอนนี้ (เพื่อนของฉัน) เลือกภาษาเหล่านี้โดยไม่สนใจ C เนื่องจากสนับสนุนคุณสมบัติขั้นสูง ฉันบอกให้พวกเขาเริ่มต้นด้วย C. พวกเขาบอกว่าเป็นเรื่องเสียที่จะเรียนรู้แนวคิดของพอยน์เตอร์เมื่อคุณทำสิ่งขั้นสูงใน VB.NET หรือ Java …

11
ฉันจะจัดระเบียบแผนผังต้นกำเนิดของฉันได้อย่างไร
ฉันเป็นนักพัฒนารายบุคคลที่ทำงานเป็นส่วนใหญ่บนเว็บโปรเจ็กต์ (W / LAMP) และบางครั้งในโปรเจ็กต์ C / C ++ (ไม่ใช่ GUI) ที่ระดับเฉลี่ย ฉันมักจะต่อสู้กับโครงสร้างต้นไม้ซอร์สโค้ดของฉัน ที่จริงแล้วโดยทั่วไปฉันไม่ได้ทำโครงการให้เสร็จโดยไม่ต้องทิ้งต้นไม้ทั้งหมดแล้วจัดเรียงชิ้นส่วนใหม่ 3-4 ครั้งซึ่งต้องใช้ความพยายามอย่างมากและยิ่งกว่านั้นผลลัพธ์สุดท้ายก็ดูเหมือนจะเป็นการประนีประนอม บางครั้งฉันก็จบลงด้วยการจำแนกแหล่งที่มา - ต้นไม้ที่ยาวมากและโฟลเดอร์ย่อย ในบางครั้งฉันก็จะมุ่งเน้นไปที่ไฟล์ทั้งหมดในโฟลเดอร์เฉพาะตามวัตถุประสงค์ที่ใหญ่กว่าที่พวกเขาให้บริการและนำไปสู่โฟลเดอร์ 'วุ่นวาย' ในแหล่งที่มา ฉันต้องการถาม: มีหลักการ / ตรรกะ / แนวปฏิบัติที่ดีที่สุดที่สามารถช่วยฉันจัดโครงสร้างต้นกำเนิดของฉันได้ดีขึ้นหรือไม่ มีเทคนิคกราฟิก / ไดอะแกรม (เช่น: DFD ในกรณีของดาต้าโฟลว์) ที่สามารถช่วยให้ฉันเห็นภาพต้นไม้ต้นกำเนิดของฉันล่วงหน้าจากการวิเคราะห์โครงการหรือไม่ กลยุทธ์ใดที่จะนำมาใช้กับโครงสร้างไฟล์มัลติมีเดียที่เชื่อมโยงกับโครงการ เกี่ยวกับเงินรางวัล : ฉันซาบซึ้งกับคำตอบที่มีอยู่กับสมาชิกที่แบ่งปันแนวปฏิบัติของตัวเองอย่างไรก็ตามฉันต้องการสนับสนุนคำตอบทั่วไป (หรือแหล่งข้อมูล) และคำแนะนำเพิ่มเติมและการตอบสนองเพิ่มเติมจากสมาชิก

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