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

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

3
ทำไมโอเปอเรเตอร์ NOT แบบลอจิคัลในภาษา C-style“!” และไม่ใช่“ ~~”?
สำหรับตัวดำเนินการไบนารีเรามีตัวดำเนินการทั้งสองบิตและตรรกะ: & bitwise AND | bitwise OR && logical AND || logical OR ไม่ใช่ (โอเปอเรเตอร์ unary) ทำงานแตกต่างกัน มี ~ สำหรับ bitwise และ! สำหรับตรรกะ ฉันจำไม่ได้ว่าเป็นการดำเนินการที่ไม่เป็นเอกเทศเมื่อเทียบกับ AND และหรือ แต่ฉันไม่สามารถคิดได้ว่าทำไมนักออกแบบเลือกที่จะเบี่ยงเบนจากหลักการที่ว่าซิงเกิลเป็น bitwise และ Double นั้นมีเหตุผลที่นี่และเปลี่ยนไปใช้ตัวละครอื่นแทน ฉันเดาว่าคุณสามารถอ่านมันผิดเช่นการดำเนินการสองบิตที่จะคืนค่าตัวถูกดำเนินการ แต่นั่นไม่ได้เป็นปัญหาที่แท้จริงสำหรับฉัน มีเหตุผลที่ฉันขาดหายไปหรือไม่?
39 java  c#  c++  c 

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

4
เครื่องหมายแผนภาพคลาส UML: ความแตกต่างระหว่างสมาคมการรวมและการจัดองค์ประกอบ
ฉันสับสนเกี่ยวกับสัญลักษณ์บางอย่างของแผนภาพคลาส UML ค่อนข้างแน่ใจว่าฉันรู้ว่าสมาคมหมายถึงอะไร ความสัมพันธ์ระหว่างอินสแตนซ์ของสองคลาสที่อินสแตนซ์ของคลาสหนึ่งจำเป็นต้องทราบเกี่ยวกับอินสแตนซ์ของคลาสที่สองเพื่อที่จะทำงานได้ - เป็นความสัมพันธ์ของสมาคม สมาคมมักหมายถึงคลาส A มีการอ้างอิง (ฟิลด์) กับอินสแตนซ์ของคลาส B อย่างไรก็ตามฉันมีปัญหาในการทำความเข้าใจว่าลูกศรการรวมและการจัดองค์ประกอบหมายถึงอะไร ความสับสนส่วนหนึ่งของฉันเกิดจากการเผชิญหน้ากับคำจำกัดความต่าง ๆ ของสัญลักษณ์เหล่านี้ คำจำกัดความสองประการของสัญลักษณ์การรวม : คำจำกัดความที่ 1:สัญกรณ์การรวมตัวระหว่างสองคลาสนั้นเหมาะสมเมื่อใดก็ตามที่อินสแตนซ์ของคลาส A เก็บชุดอินสแตนซ์ของคลาส B (เช่น List, Array หรืออะไรก็ตาม) คำจำกัดความที่ 2:ลิงค์รวมระหว่างสองคลาสนั้นเหมาะสมถ้าอินสแตนซ์ของคลาส A มีการอ้างอิงถึงอินสแตนซ์ของคลาส B และอินสแตนซ์ B นั้นขึ้นอยู่กับวงจรชีวิตของอินสแตนซ์ A ความหมาย: เมื่ออินสแตนซ์ของคลาส A ถูกลบดังนั้นอินสแตนซ์ของคลาส B อินสแตนซ์ของคลาส B จะมีอยู่ทั้งหมดโดยอินสแตนซ์ของคลาส A ซึ่งตรงข้ามกับอินสแตนซ์ของคลาส A เพียงเป็นเจ้าของการอ้างอิงถึงอินสแตนซ์ของ คลาส B …

7
เหตุใด“ การอ้างอิงวัตถุไม่ได้ถูกตั้งค่าเป็นอินสแตนซ์ของวัตถุ” บอกเราว่าวัตถุใด
เรากำลังเปิดตัวระบบและบางครั้งเราได้รับข้อยกเว้นที่มีชื่อเสียงพร้อมกับข้อความNullReferenceExceptionObject reference not set to an instance of an object อย่างไรก็ตามในวิธีการที่เรามีวัตถุเกือบ 20 ชิ้นการมีบันทึกซึ่งบอกว่าวัตถุนั้นเป็นโมฆะนั้นไม่มีประโยชน์เลย มันเหมือนกับบอกคุณว่าเมื่อคุณเป็นตัวแทนความปลอดภัยของการสัมมนาคนหนึ่งใน 100 คนเป็นผู้ก่อการร้าย มันไม่มีประโยชน์กับคุณเลย คุณควรได้รับข้อมูลเพิ่มเติมหากคุณต้องการตรวจสอบว่าชายคนไหนเป็นคนที่คุกคาม ในทำนองเดียวกันถ้าเราต้องการที่จะลบข้อผิดพลาดเราจำเป็นต้องรู้ว่าวัตถุใดเป็นโมฆะ ตอนนี้มีบางอย่างหมกมุ่นอยู่ในใจฉันมาหลายเดือนแล้วและนั่นก็คือ: เหตุใด. NET จึงไม่ให้ชื่อเราหรืออย่างน้อยก็ประเภทของการอ้างอิงวัตถุซึ่งเป็นโมฆะ? . ไม่เข้าใจประเภทจากการสะท้อนกลับหรือแหล่งอื่น ๆ นอกจากนี้แนวปฏิบัติที่ดีที่สุดที่จะเข้าใจว่าวัตถุใดเป็นโมฆะ? เราควรทดสอบความสามารถของวัตถุในบริบทเหล่านี้ด้วยตนเองเสมอและบันทึกผลลัพธ์หรือไม่ มีวิธีที่ดีกว่า? อัปเดต: ข้อยกเว้นThe system cannot find the file specifiedมีลักษณะเดียวกัน คุณไม่พบไฟล์ใดจนกว่าคุณจะแนบกับกระบวนการและดีบัก ฉันเดาว่าข้อยกเว้นประเภทนี้จะฉลาดขึ้น มันจะดีกว่าไหมถ้า. NET สามารถบอกเราc:\temp.txt doesn't exist.แทนข้อความทั่วไปได้? ในฐานะนักพัฒนาฉันลงคะแนนใช่

9
การวิพากษ์วิจารณ์ "สร้างสรรค์" ของรหัสของคุณไม่เป็นประโยชน์ ณ จุดใด
ฉันเพิ่งเริ่มต้นเป็นนักพัฒนารุ่นน้อง เช่นเดียวกับการเป็นหนึ่งในคนที่มีประสบการณ์น้อยที่สุดในทีมฉันก็เป็นผู้หญิงคนหนึ่งซึ่งมาพร้อมกับความท้าทายทุกประเภทของตัวเองที่ทำงานในสภาพแวดล้อมที่เป็นชาย ฉันมีปัญหาเมื่อเร็ว ๆ นี้เพราะฉันรู้สึกว่าฉันได้รับคำวิจารณ์เชิงวิพากษ์วิจารณ์มากเกินไปในงานของฉัน ผมขอยกตัวอย่างสิ่งที่เกิดขึ้นเมื่อเร็ว ๆ นี้ หัวหน้าทีมยุ่งเกินไปที่จะผลักดันในบางสาขาที่ฉันทำดังนั้นเขาจึงไม่ไปถึงพวกเขาจนกว่าจะถึงสุดสัปดาห์ ฉันตรวจสอบเมลของฉันไม่ได้มีความหมายว่าจะทำงานใด ๆ และพบว่าทั้งสองสาขาของฉันถูกปฏิเสธโดยใช้ชื่อตัวแปรทำให้ข้อความแสดงข้อผิดพลาดมีความหมายมากขึ้นและย้ายค่าบางอย่างไปยังไฟล์ปรับแต่ง ฉันไม่รู้สึกว่าการปฏิเสธสาขาของฉันบนพื้นฐานนี้มีประโยชน์ ผู้คนจำนวนมากทำงานในช่วงสุดสัปดาห์และฉันไม่เคยบอกว่าจะทำงาน อย่างมีประสิทธิภาพบางคนอาจถูกบล็อกเพราะฉันไม่มีเวลาทำการเปลี่ยนแปลงและส่งอีกครั้ง เรากำลังทำงานในโครงการที่มีความอ่อนไหวต่อเวลามากและดูเหมือนว่าสำหรับฉันแล้วมันไม่ได้มีประโยชน์อะไรเลยที่จะปฏิเสธรหัสทันทีตามสิ่งต่าง ๆ ที่โปร่งใสสำหรับลูกค้า ฉันอาจจะผิด แต่ดูเหมือนว่าสิ่งเหล่านี้ควรได้รับการจัดการในประเภทปะแก้เมื่อฉันมีเวลา ตอนนี้ฉันเห็นแล้วว่าในบางสภาพแวดล้อมนี่จะเป็นบรรทัดฐาน อย่างไรก็ตามการวิจารณ์ไม่ได้กระจายเท่ากันซึ่งเป็นสิ่งที่นำไปสู่ปัญหาต่อไปของฉัน พื้นฐานของปัญหาเหล่านี้ส่วนใหญ่เกิดจากความจริงที่ว่าฉันอยู่ใน codebase ที่คนอื่นเขียนและพยายามที่จะบุกรุกน้อยที่สุด ฉันเลียนแบบชื่อตัวแปรที่ใช้ที่อื่นในไฟล์ เมื่อฉันพูดถึงสิ่งนี้ฉันก็บอกอย่างตรงไปตรงมาว่า "อย่าเลียนแบบคนอื่นทำในสิ่งที่ถูกต้อง" นี่อาจเป็นสิ่งที่มีประโยชน์น้อยที่สุดที่ฉันบอกได้ หากรหัสที่เช็คอินแล้วไม่สามารถยอมรับได้ฉันควรจะบอกได้อย่างไรว่าอะไรถูกและผิด? หากพื้นฐานของความสับสนนั้นมาจากรหัสพื้นฐานฉันไม่คิดว่า ' ฉันรู้สึกโดดเดี่ยวและผิดหวังมากในสถานการณ์นี้ ฉันได้รับสิ่งที่ดีกว่ามากเกี่ยวกับการทำตามมาตรฐานที่คาดไว้และฉันรู้สึกหงุดหงิดเช่นเมื่อฉันสร้างรหัสใหม่เพื่อตรวจสอบข้อผิดพลาดของ ADD ที่หายไปก่อนหน้านี้ฉันบอกเพียงว่าฉันไม่ได้ ทำให้เกิดข้อผิดพลาดอย่างเพียงพอ (และสาขาถูกปฏิเสธบนพื้นฐานนี้) จะเกิดอะไรขึ้นถ้าฉันไม่เคยเพิ่มลงไปเพื่อเริ่มต้น มันจะเริ่มต้นอย่างไรในรหัสเพื่อเริ่มต้นถ้ามันผิดดังนั้น? นี่คือเหตุผลที่ฉันรู้สึกแยกออกจากกัน: ฉันพบกับรหัสปัญหาที่มีอยู่นี้อย่างต่อเนื่องซึ่งฉันเลียนแบบหรือปรับเปลี่ยนใหม่ เมื่อฉันเลียนแบบมันเป็น "ผิด" และถ้าฉัน refactor มันฉัน chided สำหรับทำไม่เพียงพอ (และถ้าฉันไปตลอดทางแนะนำแมลง …

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

6
นักพัฒนาซอฟต์แวร์สามารถรับส่วนลดสำหรับผลิตภัณฑ์ของ Microsoft ได้หรือไม่ [ปิด]
ถ้าฉันจะเริ่มที่จะมุ่งเน้นไปที่แพลตฟอร์ม. NET และเป็นผู้ประกอบอาชีพอิสระฉันอาจต้องการมีใบอนุญาต Windows 7, Windows Server 2008, Visual Studio 2010 ลิขสิทธิ์สำหรับสภาพแวดล้อมการพัฒนาและการทดสอบและจากนั้นใบอนุญาตเพียงไม่กี่ สำหรับสภาพแวดล้อมการผลิต (Windows Server 2008 Web) และเพิ่มเข้าไปในการอัพเกรดนั้นเมื่อมีเวอร์ชั่นใหม่ให้ใช้งาน สิ่งนี้จะจบลงด้วยเงินจำนวนมาก มีส่วนลดแบบกลุ่มใดบ้างที่ฉันจะได้รับจาก Microsoft ในกรณีเช่นนี้? และความต้องการที่จะได้รับส่วนลดนั้นคืออะไร?

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

8
นานแค่ไหนที่จะรอก่อนที่จะลบวิธีการเลิก? [ปิด]
ฉันกำลังรักษา API สาธารณะและต้องเลิกใช้วิธีการ มีกฎทั่วไปเกี่ยวกับจำนวนเดือน / ปี / รุ่นก่อนการลบฉันควรคัดค้านวิธีการหรือไม่?
38 java  deprecation 

3
การทดสอบบูรณาการวิจารณ์การออกแบบอย่างไร
ฉันได้อ่านที่โพสต์บล็อกของ JB Rainsbergerเกี่ยวกับการทดสอบแบบบูรณาการและสงสัยว่าวิธีการทดสอบบูรณาการนั้นรุนแรงกว่ากับการออกแบบของเราหรือไม่ เราเขียนการทดสอบแบบบูรณาการมากขึ้นซึ่งใหญ่กว่าและไม่วิจารณ์การออกแบบของเราอย่างรุนแรงเช่นเดียวกับ microtests

6
มีรูปแบบการจัดการพารามิเตอร์ฟังก์ชันที่ขัดแย้งหรือไม่?
เรามีฟังก์ชัน API ที่แบ่งจำนวนเงินทั้งหมดเป็นจำนวนเงินรายเดือนตามวันที่เริ่มต้นและวันที่สิ้นสุดที่กำหนด // JavaScript function convertToMonths(timePeriod) { // ... returns the given time period converted to months } function getPaymentBreakdown(total, startDate, endDate) { const numMonths = convertToMonths(endDate - startDate); return { numMonths, monthlyPayment: total / numMonths, }; } เมื่อเร็ว ๆ นี้ผู้บริโภคสำหรับ API นี้ต้องการระบุช่วงวันที่ด้วยวิธีอื่น: 1) โดยระบุจำนวนเดือนแทนที่จะเป็นวันที่สิ้นสุดหรือ 2) โดยระบุการชำระเงินรายเดือนและการคำนวณวันที่สิ้นสุด เพื่อตอบสนองต่อสิ่งนี้ทีม API …
38 api-design 

10
ความแตกต่างระหว่างตัวแปรและตำแหน่งหน่วยความจำคืออะไร? [ปิด]
เมื่อเร็ว ๆ นี้ฉันพยายามอธิบายพอยน์เตอร์ด้วยวิธีภาพเป็นแฟลชการ์ด คำถาม 001:นี่คือภาพวาดของตำแหน่งในหน่วยความจำคอมพิวเตอร์ มันเป็นความจริง0x23452หรือไม่ที่อยู่ของมันคือ ทำไม? คำตอบ:ใช่เพราะ0x23452อธิบายว่าคอมพิวเตอร์สามารถหาตำแหน่งนี้ได้จากที่ใด คำถาม 002:จริงหรือไม่ที่ตัวละครbนั้นถูกเก็บไว้ในตำแหน่งหน่วยความจำ0x23452? ทำไม? คำตอบ:ไม่เพราะตัวละครaจะถูกเก็บไว้ข้างใน คำถามที่ 003:มันคือความจริงที่เป็นตัวชี้ที่เก็บไว้ภายในที่ตั้งหน่วยความจำ0x23452? ทำไม? คำตอบ:ใช่เพราะที่อยู่ของตำแหน่งหน่วยความจำ0x34501ถูกเก็บไว้ข้างใน คำถามที่ 004:มันคือความจริงที่เป็นตัวชี้ที่เก็บไว้ภายในที่ตั้งหน่วยความจำ0x23452? ทำไม? คำตอบ:ใช่เพราะที่อยู่ของตำแหน่งหน่วยความจำอื่นจะถูกเก็บไว้ข้างใน ตอนนี้สำหรับส่วนที่ทำให้ฉันกังวล วิศวกรซอฟต์แวร์อธิบายพอยน์เตอร์ให้ฉันเช่นนี้: ตัวชี้เป็นตัวแปรที่มีค่าเป็นที่อยู่หน่วยความจำของตัวแปรอื่น จาก FlashCards ทั้งสี่ที่ฉันแสดงให้คุณเห็นทั้งหมดฉันจะกำหนดพอยน์เตอร์ด้วยวิธีที่แตกต่างกันเล็กน้อย: ตัวชี้คือตำแหน่งหน่วยความจำที่มีค่าเป็นที่อยู่หน่วยความจำของตำแหน่งหน่วยความจำอื่น มันปลอดภัยหรือไม่ที่จะบอกว่าตัวแปรนั้นเหมือนกับตำแหน่งหน่วยความจำหรือไม่? ถ้าไม่เช่นนั้นใครถูก ความแตกต่างระหว่างตัวแปรและตำแหน่งหน่วยความจำคืออะไร?

5
คุณควรตั้งโปรแกรมฝั่งเซิร์ฟเวอร์สำหรับเว็บไซต์หรือไม่?
ฉันกำลังจะเริ่มสร้างเว็บไซต์โครงการดนตรีสำหรับเพื่อน ตอนนี้น่าจะง่ายพอสมควร: ไม่มีเนื้อหาแบบไดนามิก (วันทัวร์ ฯลฯ ) และไม่มีอะไรมากไปกว่าเพลงตัวอย่างที่ฝังอยู่หรือลิงก์ SoundCloud ฉันไม่ได้คาดหวังว่าจะใช้อะไรมากกว่าวานิลลา JavaScript และ Bootstrap หรือมูลนิธิสำหรับกริดที่ตอบสนอง มันเพียงพอหรือไม่ ฉันสามารถอัปโหลดไฟล์ HTML, CSS และ JS ไปยังโฮสต์และทำได้หรือไม่หรือฉันควรใช้เวลาในการเขียนโปรแกรมเซิร์ฟเวอร์ backend ใน Node หรือ PHP?

5
จะทำอย่างไรเมื่อคุณไม่สามารถกำหนดค่าบูลีนได้
เรากำลังสร้างเว็บแอปพลิเคชั่นให้กับ บริษัท ซึ่งมีการจัดการอยู่ในแผ่นงาน Excel เท่านั้น เราเกือบจะเสร็จแล้ว แต่เมื่อเร็ว ๆ นี้ฉันได้รับมอบหมายให้นำเข้าข้อมูลทั้งหมดจากแผ่นงานเหล่านั้นไปยังระบบใหม่ของเรา ระบบสร้างขึ้นใน Java แต่การนำเข้านี้เป็นเพียงครั้งเดียวฉันตัดสินใจเขียนสคริปต์ใน Python แทนและนำเข้าโดยตรงด้วยการสืบค้น SQL ที่นี่ปัญหามา โมเดลข้อมูลใหม่มีแอตทริบิวต์ใหม่บางตัวซึ่งไม่รวมอยู่ในข้อมูลที่มีอยู่ ในกรณีส่วนใหญ่นี่ไม่ใช่ปัญหาฉันแค่ใส่ค่าเป็นศูนย์ซึ่งฉันไม่สามารถหาข้อมูลได้ แต่แล้วฉันก็วิ่งเข้าไปหาคุณสมบัติบางอย่างซึ่งเป็นบูลีนและไม่สามารถเป็นค่าเริ่มต้นได้ ก่อนอื่นฉันพยายามอนุญาต null สำหรับเขตข้อมูลเหล่านั้นในฐานข้อมูลของเรา แต่ผู้พัฒนาระดับสูงของฉันบอกให้ฉันไม่ทำ เพราะจะทำให้เกิดปัญหาในระบบของเราในอนาคต และตอนนี้ฉันไม่แน่ใจว่าจะทำอย่างไร วิธีแก้ปัญหาที่ชัดเจนคือการกำหนดค่าบูลีนที่ไม่รู้จักเป็นเท็จ แต่ฉันคิดว่ามันผิดเช่นกันเพราะฉันไม่รู้จริง ๆ ไม่ว่าจะเป็นของปลอม ตัวอย่าง: สมมติว่าคุณมีเอนทิตีคาร์ที่มีพารามิเตอร์ hasRadio ตอนนี้คุณต้องนำเข้าข้อมูลไปยังตัวแบบข้อมูลนี้ แต่ในข้อมูลมีเพียงคอลัมน์ "แบบจำลอง" และ "สี" ไม่เกี่ยวกับการมีหรือไม่มีวิทยุ คุณใส่อะไรลงในคอลัมน์ "hasRadio" ถ้ามันไม่สามารถเป็นโมฆะโดยการออกแบบ? วิธีที่ดีที่สุดในสถานการณ์นี้คืออะไร? เราควรบอกให้ บริษัท กรอกข้อมูลที่หายไปด้วยตนเองหรือไม่? หรือตั้งค่าเริ่มต้นเป็นเท็จ

7
มันสมเหตุสมผลหรือไม่ที่จะสร้างบล็อกเพื่อลดขอบเขตของตัวแปร?
ฉันกำลังเขียนโปรแกรมใน Java ซึ่ง ณ จุดหนึ่งฉันต้องโหลดรหัสผ่านสำหรับที่เก็บคีย์ของฉัน เพื่อความสนุกฉันพยายามเก็บรหัสผ่านของฉันไว้ในจาวาให้สั้นที่สุดโดยทำสิ่งนี้: //Some code .... KeyManagerFactory keyManager = KeyManagerFactory.getInstance("SunX509"); Keystore keyStore = KeyStore.getInstance("JKS"); { char[] password = getPassword(); keyStore.load(new FileInputStream(keyStoreLocation), password); keyManager.init(keyStore, password); } ... //Some more code ตอนนี้ฉันรู้ว่าในกรณีนี้มันเป็นใบ้ มีสิ่งอื่น ๆ อีกมากมายที่ฉันสามารถทำได้ส่วนใหญ่จริง ๆ แล้วดีกว่า (ฉันไม่เคยใช้ตัวแปรเลย) อย่างไรก็ตามฉันสงสัยว่ามีกรณีที่การทำเช่นนี้ไม่ได้โง่ขนาดนั้น สิ่งเดียวที่ฉันคิดได้ก็คือถ้าคุณต้องการใช้ชื่อตัวแปรที่เหมือนกันอีกครั้งเช่นcountหรือtempแต่การตั้งชื่อที่ดีและวิธีการสั้น ๆ ทำให้มันไม่น่าเป็นไปได้ที่จะเป็นประโยชน์ มีกรณีที่ใช้บล็อกเพียงเพื่อลดขอบเขตตัวแปรที่เหมาะสมหรือไม่?
38 java  variables  scope 

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