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

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

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

14
ทำไมการคำนวณทางคณิตศาสตร์มากเกินไปจึงถูกเพิกเฉย?
เคยลองสรุปตัวเลขทั้งหมดตั้งแต่ 1 ถึง 2,000,000 ในภาษาการเขียนโปรแกรมที่คุณชื่นชอบ? ผลลัพธ์ที่ได้นั้นง่ายต่อการคำนวณด้วยตนเอง: 2,000,001,000,000 ซึ่งมีขนาดใหญ่กว่า 900 เท่าของค่าสูงสุดของจำนวนเต็ม 32 บิตที่ไม่ได้ลงนาม C # พิมพ์ออกมา-1453759936- ค่าลบ! และฉันเดาว่า Java ทำเช่นเดียวกัน นั่นหมายความว่ามีบางภาษาโปรแกรมทั่วไปที่ละเว้น Arithmetic Overflow โดยค่าเริ่มต้น (ใน C # มีตัวเลือกที่ซ่อนอยู่สำหรับการเปลี่ยนแปลงนั้น) นั่นเป็นพฤติกรรมที่ดูเสี่ยงมากสำหรับฉันและไม่ใช่ความผิดพลาดของ Ariane 5 ที่เกิดจากการไหลล้นเช่นนี้ใช่ไหม ดังนั้น: อะไรคือการตัดสินใจในการออกแบบที่อยู่เบื้องหลังพฤติกรรมที่อันตราย แก้ไข: คำตอบแรกสำหรับคำถามนี้แสดงค่าใช้จ่ายในการตรวจสอบที่มากเกินไป มารันโปรแกรม C # สั้น ๆ เพื่อทดสอบสมมติฐานนี้: Stopwatch watch = Stopwatch.StartNew(); checked { for (int i …

3
ทำไม Python เขียนใน C และไม่ใช่ C ++
ในแบบฝึกหัดของ Python ผู้คนสามารถอ่านได้ว่าการนำ Python ไปใช้ใน C คือ ในทางกลับกันการใช้งาน Python ที่เขียนด้วยภาษา C, (... ) ฉันสงสัยมากว่าทำไม Python เขียนใน C ไม่ใช่ C ++ ฉันต้องการทราบเหตุผลของการตัดสินใจครั้งนี้และคำตอบควรได้รับการสนับสนุนโดยการอ้างอิงทางประวัติศาสตร์ (และไม่ใช่ความคิดเห็นตาม)

7
วิธีเขียนคำว่าอูฐสำหรับคำเช่น "phonenumber", "มอเตอร์ไซค์", "wavelength" ฯลฯ
ฉันมีปัญหาในการทำความเข้าใจวิธีใช้ไวยากรณ์ camelCaseกับชื่อตัวแปรบางส่วนของฉัน ตัวอย่างเช่นฉันควรเขียนคำอย่าง "phonenumber" ในกรณีอูฐอย่างไร มันเป็นphoneNumberหรือphonenumber? เช่นเดียวกันกับ "ชื่อผู้ใช้" ใช่usernameหรือuserNameไม่ ฉันคิดว่ามันไม่ได้มองขวามีกรณีเช่นอูฐmotorCycle, passWord, sunDay, setUpหรือwaveLengthเพราะสิ่งเหล่านี้เป็นเพียงหนึ่งในแต่ละคำ ฉันคิดว่าอาจเป็นสาเหตุที่เรียกว่าhashMapแต่hashtableในกรณีอูฐที่ไม่มีทุนในกรณีสุดท้ายเพราะ hashtable เป็นหนึ่งคำในขณะที่แฮชแผนที่คือสองคำ แต่ถ้ามอเตอร์ไซค์มีสีก็จะเป็นmotorcycleColorเพราะคำต่อกัน? ว่าถูกต้องหรือมันควรจะเป็นphoneNUmber, waveLength, sunBlockและแม้กระทั่งsunDayสำหรับวันอาทิตย์ของสัปดาห์? ทำไมตัวอย่างเป็นวิธีการที่เรียกว่าgetISOCountriesในขณะที่มันพูดว่าHttpHeadersเช่นมันไม่ชัดเจนว่าจะกลายเป็นตัวพิมพ์เล็กถ้าเรามีวิธีการเหมือนหรือString camelCaseString = dog.toCamelCase()interface CamelCase ที่เกี่ยวข้อง: https://english.stackexchange.com/questions/889/when-should-compound-words-be-written-as-one-word-with-hyphens-or-with-spaces

9
คุณควรจัดการกับโครงการยอดนิยมที่คุณไม่ต้องการดูแลอีกต่อไปอย่างไร
ฉันเป็นผู้ดูแลโครงการที่มีฐานผู้ใช้ที่ไม่ใช่ด้านเทคนิคขนาดใหญ่ ฉันได้ทำการบำรุงรักษามาประมาณ 4 ปีแล้วและเพิ่มคุณสมบัติใหม่ตามที่ได้รับการร้องขอ ฉันต้องการที่จะไปยังโครงการอื่นในตอนนี้และหยุดพัฒนาสำหรับแอปพลิเคชันนี้ เนื่องจากลักษณะที่ไม่ใช่ด้านเทคนิคของผู้ใช้มีการสนับสนุนโค้ดน้อยมากในอดีต ฉันไม่เชื่อว่าฉันจะสามารถหาคนอื่นมาดูแลโครงการแทน ข้อบกพร่องปัญหาคำขอคุณสมบัติ - สิ่งเหล่านี้ยังคงเข้ามาฉันยังคงตอบกลับอีเมลเพื่อขอความช่วยเหลือเนื่องจากฉันไม่แน่ใจว่าควรจะเพิกเฉยต่อพวกเขาหรือไม่บอกพวกเขาว่าฉันไม่ได้ทำงานกับแอปพลิเคชัน อีเมลในบางกรณีเท่านั้น วิธีที่ดีที่สุดในการ 'ละทิ้ง' โครงการนี้ แต่ยังคงให้ผู้ใช้ใช้งานแอปพลิเคชันอยู่ อัปเดต (กรกฎาคม 2559) - ไม่เป็นไปตามแผนที่วางไว้ ฉันประกาศใน README และหลังจากนั้นไม่นานฉันก็เริ่มได้รับเงินบริจาคจากธรรมชาติที่สำคัญกว่านี้ ดึงคำขอด้วยการแก้ไขข้อบกพร่องคุณสมบัติเอกสารประกอบกิจกรรมการออก ตั้งแต่นั้นมาโครงการรู้สึกถึง 'reinvigorated' และตอนนี้ฉันก็มีความสุขในการดูแลมันพร้อมกับโครงการใหม่ ๆ ฉันมีผู้ทำงานร่วมกันเช่นกัน โดยการคาดเดาอาจเป็นผลงานที่ส่งผลต่อมุมมองของฉันเกี่ยวกับโครงการและด้วยการปรับปรุงคุณภาพการมีส่วนร่วมมันไม่ได้รู้สึกว่าเป็นงานที่น่าเบื่ออีกต่อไป

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

17
วิธีฝึกตัวเองให้หลีกเลี่ยงการเขียนรหัส“ ฉลาด” [ปิด]
คุณรู้หรือไม่ว่าความรู้สึกนั้นเมื่อคุณต้องการที่จะแสดงให้เห็นถึงเคล็ดลับใหม่ที่มีExpressions หรือวางแนวทางที่แตกต่างกันสามขั้นตอน? สิ่งนี้ไม่จำเป็นต้องอยู่ในระดับสถาปัตยกรรมนักบินอวกาศและในความเป็นจริงอาจเป็นประโยชน์ แต่ฉันอดไม่ได้ที่จะสังเกตเห็นว่าคนอื่นจะใช้คลาสเดียวกันหรือแพ็คเกจเดียวกันอย่างชัดเจนตรงไปตรงมา (และบางครั้งน่าเบื่อ) ฉันสังเกตว่าฉันมักจะออกแบบโปรแกรมด้วยการแก้ไขปัญหาบางครั้งก็จงใจและบางครั้งก็เบื่อ ไม่ว่าในกรณีใดฉันมักจะเชื่อโดยสุจริตว่าโซลูชันของฉันนั้นใสและสง่างามจนกระทั่งฉันเห็นหลักฐานที่ตรงกันข้าม แต่โดยปกติแล้วมันจะสายเกินไป นอกจากนี้ยังมีส่วนหนึ่งของฉันที่ชอบสมมติฐานที่ไม่มีเอกสารในการทำสำเนารหัสและความฉลาดในการเรียบง่าย ฉันจะทำอะไรได้บ้างที่จะต่อต้านการกระตุ้นให้เขียนรหัส“ ฉลาด”และเสียงกระดิ่งที่ฉันควรทำเมื่อใด ปัญหาคือการผลักมากขึ้นขณะที่ฉันกำลังทำงานกับทีมนักพัฒนาที่มีประสบการณ์และบางครั้งความพยายามของฉันในการเขียนรหัสสมาร์ทดูเหมือนโง่เง่าแม้แต่กับตัวเองหลังจากเวลาผ่านไปภาพลวงตาของความสง่างาม

12
มีจุดที่รวม“ บันทึกการเปลี่ยนแปลง” ในไฟล์รหัสทุกไฟล์เมื่อคุณใช้การควบคุมเวอร์ชันหรือไม่?
ฉันรู้สึกว่าระบบควบคุมเวอร์ชันขจัดความจำเป็นที่จะต้อง "บันทึกการเปลี่ยนแปลง" ถูกฉาบทุกที่ในรหัส ฉันมักจะเห็นการใช้งานอย่างต่อเนื่องของบันทึกการเปลี่ยนแปลงรวมถึงบล็อกยาวขนาดใหญ่ที่จุดเริ่มต้นของขั้นตอนการจัดเก็บที่มีส่วนใหญ่ถูกบล็อกออกสำหรับการเปลี่ยนแปลงในไฟล์และทิ้งรหัสด้วยสิ่งต่าง ๆ เช่น: // 2011-06-14 (John Smith) Change XYZ to ABC to fix Bug #999 และ: // 2009-95-12 (Bob Jones) Extracted this code to Class Foo // <commented-out code here> เหตุผลสำหรับสิ่งนี้ตามที่อธิบายให้ฉันคือการใช้เวลานานเกินไปในการตรวจสอบบันทึก VCS ของเราพยายามค้นหาว่าใครเปลี่ยนอะไรและเพราะอะไรในขณะที่เก็บไว้ในไฟล์รหัสตัวเองไม่ว่าจะอยู่ด้านบนสุดหรือใกล้เคียง การเปลี่ยนแปลงทำให้ง่ายต่อการดูว่าใครเปลี่ยนอะไรและเมื่อไหร่ ในขณะที่ฉันเห็นประเด็นนั้นดูเหมือนว่าจะซ้ำซ้อนและเป็นเพียงแค่ของเล็ก ๆ น้อย ๆ "เอ๋เราไม่เข้าใจวิธีการใช้ VCS ของเราอย่างถูกต้องดังนั้นเราจะไม่สนใจสิ่งนั้นเลย" คุณคิดอย่างไร? คุณใช้ทั้งความคิดเห็นและบันทึกหรือไม่ แค่บันทึก คุณพบว่าการโค้ดง่ายขึ้นเมื่อคุณเห็นโค้ดบล็อกข้างต้นที่ John Smith …

18
วิธีที่ดีที่สุดในการจูงใจทีมนักพัฒนาคืออะไร? [ปิด]
ฉันรู้ล่วงหน้าว่าผู้คนจะเห็นคำถามนี้และคิดว่า "กระทิงแดงฟรี" แต่ฉันกำลังมองหาวิธีที่ดีที่สุดในการผูกรางวัลสำหรับนักพัฒนากับเป้าหมายระยะยาวของ บริษัท ตัวอย่างเช่นสมมติว่าทีมกำลังทำงานกับผลิตภัณฑ์ซอฟต์แวร์เดียวกันจะเป็นการดีที่สุดที่จะให้รางวัลแก่นักพัฒนาซอฟต์แวร์แต่ละรายตามเงื่อนไขของผลิตภัณฑ์ขั้นสุดท้ายหรือไม่ พวกเขาเป็นทีมหลังจากทั้งหมดและสิ่งนี้จะทำให้มั่นใจได้ว่าพวกเขากำลังทำงานเพื่อบรรลุเป้าหมายร่วมกันในการทำให้ผลิตภัณฑ์ออกมา อย่างไรก็ตามสิ่งนี้ไม่สนใจความจริงที่ว่านักพัฒนาบางคนนั้นแข็งแกร่งกว่าคนอื่นและบางคนก็ทำงานหนักกว่าคนอื่น จากประสบการณ์ของคุณวิธีที่ดีที่สุดในการจูงใจทีมนักพัฒนาคืออะไร ** UPDATE ฉันขอขอบคุณการตอบรับที่แข็งแกร่งที่ฉันได้รับจากคำถามนี้ ฉันคิดว่าจะถามว่าหลังจากดูหนังเรื่องInside Jobซึ่งเกี่ยวกับสาเหตุของวิกฤตเศรษฐกิจที่ผ่านมา หนึ่งในปัจจัยสำคัญที่ภาพยนตร์อ้างถึงคือมีระบบแรงจูงใจที่ไม่ดีใน Wall St. Investors จะได้รับรางวัลสำหรับการทำเงินในระยะสั้นแม้ว่าการกระทำของพวกเขาจะเป็นหายนะก็ตาม ฉันคิดว่าแนวคิดเดียวกันนี้ใช้กับนักพัฒนาได้ดี มีกำไรระยะสั้นในการทำให้ผลิตภัณฑ์ออกมาให้เร็วที่สุดเท่าที่จะเป็นไปได้ แต่อาจมีอาการปวดหัวในระยะยาวที่สำคัญหากผลิตภัณฑ์นั้นเป็นรถบักกี้หรือหากพอร์ตนั้นไม่เข้ากับสภาพแวดล้อมอื่น ตามหลักการแล้ว บริษัท ในอุตสาหกรรมใด ๆ ควรต้องการระบบจูงใจที่ทำให้มั่นใจในความมั่นคงในระยะยาวของผลิตภัณฑ์
75 management 

14
การเพิ่มประสิทธิภาพไม่ได้เกิดก่อนกำหนดและเมื่อใดจึงไม่ชั่ว
"การเพิ่มประสิทธิภาพก่อนวัยอันควรเป็นรากฐานของความชั่วร้ายทั้งหมด" เป็นสิ่งที่เราเกือบทุกคนเคยได้ยิน / อ่าน สิ่งที่ฉันสงสัยว่าการเพิ่มประสิทธิภาพแบบใดที่ไม่ได้กำหนดไว้ล่วงหน้าเช่นในทุกขั้นตอนของการพัฒนาซอฟต์แวร์ (การออกแบบในระดับสูงการออกแบบที่มีรายละเอียดการใช้งานในระดับสูงการใช้งานโดยละเอียด ฯลฯ )

16
วิธีแนะนำการเปลี่ยนแปลงในฐานะพนักงานที่เพิ่งได้รับการว่าจ้าง [ปิด]
ฉันเพิ่งได้รับการว่าจ้างใน บริษัท ขนาดใหญ่ (หลายพันคนเพื่อให้ความคิดเกี่ยวกับขนาด) พวกเขาบอกว่าจ้างฉันเพราะความขยันของฉันและเพราะฉันยังเป็นเด็ก (ฉันอายุ 25) มีประสบการณ์ในฐานะนักเขียนโปรแกรม C / C ++ ตอนนี้ฉันอยู่ในฉันจะเห็นว่าทั้งระบบเก่าและมักจะใช้เทคโนโลยีที่ล้าสมัย ไม่มีแบบแผนการตั้งชื่อ (ไฟล์, ฟังก์ชั่น, ตัวแปร, ... ), พวกเขาไม่ได้ใช้การควบคุมเวอร์ชัน, ไม่ใช้ข้อยกเว้นหรือความหลากหลายและดูเหมือนว่าทุกคนเกือบจะหลงรักเขา (บางคนมีอายุเพียง 30 ปี) ) ฉันอยากจะแนะนำการเปลี่ยนแปลงบางอย่าง แต่ฉันไม่ต้องการที่จะเป็น "คนใหม่ที่ต้องการเปลี่ยนแปลงทุกอย่างเพียงเพราะเขาไม่ต้องการให้พอดีกับ" ฉันพยายามที่จะ "พอดีกับ" แต่จริงๆแล้วมันใช้เวลาหนึ่งสัปดาห์ในการทำสิ่งที่ฉันจะทำในบ่ายวันหนึ่งเพียงเพราะเครื่องมือที่ไม่ดีที่เราถูกบังคับให้ใช้ เพื่อนร่วมงานจำนวนมากของฉันไม่เคยมอง "สิ่ง" และเทคนิคใหม่ ๆ ที่ผู้คนใช้ในปัจจุบัน มันเหมือนพวกเขาเพิ่งยอมแพ้ สถานการณ์น่าผิดหวังจริงๆ คุณเคยอยู่ในสถานการณ์ที่คล้ายคลึงกันหรือไม่และถ้าเช่นนั้นคุณจะให้คำแนะนำอะไรแก่ฉัน มีวิธีที่ฉลาดในการเปลี่ยนแปลงสิ่งต่าง ๆ โดยไม่ต้องกลายเป็นแกะดำหรือไม่? หรือฉันควรจะเลิกความรักและพลังงานของฉันเช่นกัน? ขอขอบคุณ. อัพเดท ทำตามคำแนะนำอันมีค่าของคุณฉันสามารถแนะนำการเปลี่ยนแปลงและตอนนี้อยู่ในความดูแลของทีมที่ต้องสร้างและปรับใช้การโค่นล้ม: D ขอบคุณทุกท่าน! 6 เดือนต่อมา …

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

5
รูปแบบการออกแบบ“ แก้ไขทุกอย่าง” คืออะไร?
ในปี 2003 บทความนี้โดย Stephen Figgins บน linuxdevcenter.com BitTorrent ของ Bram Cohen ถูกอธิบายว่าใช้รูปแบบการออกแบบ "แก้ไขทุกอย่าง" วิธีการทั่วไปที่น้อยกว่าซึ่งทั้งสองทำให้ BitTorrent ยากที่จะเข้าใจ แต่ควรค่าแก่การศึกษาคือการใช้ idempotence ของโคเฮน กระบวนการเป็น idempotent เมื่อใช้มากกว่าหนึ่งครั้งทำให้ไม่มีการเปลี่ยนแปลงเพิ่มเติม Cohen กล่าวว่าเขาใช้รูปแบบการออกแบบที่เรียกว่า "แก้ไขทุกอย่าง" ซึ่งเป็นฟังก์ชั่นที่สามารถตอบสนองต่อการเปลี่ยนแปลงจำนวนมากโดยไม่ได้สังเกตสิ่งที่มันอาจเปลี่ยนแปลง เขาอธิบายว่า“ คุณสังเกตเห็นเหตุการณ์ที่เกิดขึ้นจากนั้นเรียกใช้ฟังก์ชันแก้ไขทุกอย่างที่เขียนในลักษณะที่ไม่คุ้นเคยนี้และทำความสะอาดทุกสิ่งที่อาจเกิดขึ้นและคำนวณใหม่ทั้งหมดตั้งแต่เริ่มต้น” ในขณะที่ idempotence ทำให้การคำนวณยากขึ้นง่ายขึ้น แต่ก็ทำให้สิ่งต่าง ๆ มีความซับซ้อน ไม่ชัดเจนว่าการโทรกำลังจะเปลี่ยนแปลงหากมีสิ่งใดอยู่เสมอ คุณไม่จำเป็นต้องรู้ล่วงหน้า คุณมีอิสระที่จะเรียกใช้ฟังก์ชั่น เสียงนี้ค่อนข้างดีบนใบหน้าของมัน อย่างไรก็ตามสำหรับฉันแล้วการเรียกใช้ฟังก์ชั่น "แก้ไขทุกอย่าง" idempotent จะช่วยเพิ่มความแข็งแกร่งของระบบด้วยต้นทุนที่มีประสิทธิภาพและอาจทำให้ระบบที่บรรจุนั้นแย่ลง (ซึ่งอาจต้องการกระบวนการที่วางแผนและดำเนินการอย่างรอบคอบ) ฉันไม่สามารถพูดได้ว่าฉันเคยใช้มาก่อน ฉันยังไม่สามารถหาแหล่งที่มาสำหรับการใช้งานออนไลน์ของเขา ( แต่ฉันไม่พบคนนี้ที่อ้างว่าจะขึ้นอยู่กับมัน.) หรือฉันสามารถหาอ้างอิงถึงมันนอกของบทความนี้ (และผมคิดว่า google-Fu …

4
เหตุใดนักพัฒนาซอฟต์แวร์หลายคนจึงละเมิดหลักการเปิด / ปิด
เหตุใดนักพัฒนาซอฟต์แวร์หลายคนจึงละเมิดหลักการเปิด / ปิดโดยการปรับเปลี่ยนหลายอย่างเช่นการเปลี่ยนชื่อฟังก์ชั่นซึ่งจะทำให้แอปพลิเคชั่นแตกหลังจากอัพเกรด คำถามนี้ข้ามไปที่หัวของฉันหลังจากเวอร์ชันที่รวดเร็วและต่อเนื่องในไลบรารีReact ทุกช่วงเวลาสั้น ๆ ฉันสังเกตเห็นการเปลี่ยนแปลงมากมายในไวยากรณ์ชื่อส่วนประกอบ ... ฯลฯ ตัวอย่างในReact รุ่นที่กำลังมา : คำเตือนการเลิกใช้ใหม่ การเปลี่ยนแปลงที่ยิ่งใหญ่ที่สุดคือเราได้ดึง React.PropTypes และ React.createClass ลงในแพ็คเกจของตัวเองแล้ว ทั้งสองยังสามารถเข้าถึงได้ผ่านวัตถุหลักปฏิกิริยา แต่การใช้อย่างใดอย่างหนึ่งจะบันทึกคำเตือนการคัดค้านเพียงครั้งเดียวไปยังคอนโซลเมื่ออยู่ในโหมดการพัฒนา นี่จะเป็นการเปิดใช้งานการปรับขนาดโค้ดในอนาคต คำเตือนเหล่านี้จะไม่ส่งผลต่อการทำงานของแอปพลิเคชันของคุณ อย่างไรก็ตามเราทราบว่าอาจทำให้เกิดความไม่พอใจโดยเฉพาะอย่างยิ่งหากคุณใช้กรอบการทดสอบที่ถือว่า console.error เป็นความล้มเหลว การเปลี่ยนแปลงเหล่านี้ถือเป็นการละเมิดหลักการนั้นหรือไม่? ในฐานะผู้เริ่มต้นสำหรับบางอย่างเช่นReactฉันจะเรียนรู้ได้อย่างไรด้วยการเปลี่ยนแปลงอย่างรวดเร็วในไลบรารี (มันน่าผิดหวังมาก)

2
การพึ่งพา Java "สีเทา" คืออะไร?
นักพัฒนา JVM ที่นี่ เมื่อเร็ว ๆ นี้ฉันเคยเห็น banter ในห้องแชทของ IRC และแม้แต่ในสำนักงานของฉันเองเกี่ยวกับห้องสมุด Java ที่เรียกว่า " แรเงา " บริบทของการใช้งานจะเป็นดังนี้: " เช่นนั้นมอบไคลเอ็นต์" ที่แรเงา "สำหรับ XYZ " ตัวอย่างที่สมบูรณ์แบบคือปัญหาของ Jira สำหรับ HBase : " เผยแพร่สิ่งประดิษฐ์ของลูกค้าที่มีการขึ้นต่อกันของสีเทา " ดังนั้นฉันถาม: JAR สีเทาหมายความว่าอะไร "แรเงา"?
74 java  libraries  jvm 

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