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

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

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

5
ให้ URL ที่เป็นมิตรกับเว็บไซต์และความเป็นจริงของรหัสฐานข้อมูล
เรามีฐานข้อมูลทรัพยากรไม่ว่าจะเป็นผลิตภัณฑ์โพสต์บล็อกหรืออะไร เราจำเป็นต้องออกแบบชุดรูปแบบ URL เพื่อระบุที่อยู่สำหรับเว็บไซต์สาธารณะ นี่คือสองตัวอย่างที่ผูก ID ฐานข้อมูล: https://www.youtube.com/watch?v=7FPS6llqhXw http://www.amazon.co.uk/gp/product/B000NHOMSQ นี่คือตัวอย่างที่เป็นมิตร: http://en.wikipedia.org/wiki/LED_circuit (เหลือบเล็ก ๆ น้อย ๆ ในชีวิตการท่องของฉันมี) ฉันชอบ URL ที่จดจำง่ายเนื่องจากคุณมีความคิดเกี่ยวกับสิ่งที่อยู่ท้าย URL เมื่อคุณเลื่อนหรือดูในอีเมลหรือเอกสาร ดีกว่าสำหรับ SEO หรือเคยเป็นมาก่อน จะเกิดอะไรขึ้นเมื่อเปลี่ยนชื่อเอกสารหรือผลิตภัณฑ์ อาจเป็นเพราะมันเปลี่ยนไป (Wiki อาจไม่เปลี่ยนแปลง แต่ทรัพยากรของเราสามารถทำได้) หรือเนื่องจากพิมพ์ผิดใช่ไหม ทรัพยากรของเรานั้นมีทั้งเทคนิคคำพูดยาว ๆ และข้อผิดพลาด นอกจากนี้เรายังมี ID ฐานข้อมูลซึ่งเป็นตัวเลข ลองดูแนวคิดสำหรับที่อยู่ของวิดีโอโดยใช้ร้านเช่าที่ให้เช่า: http://vidsyeah.com/video/sliding-doors/287171 ID นั้นชัดเจนและถูกใช้ในการค้นหา DB ละเอียด. บิตบานเลื่อนไม่ซ้ำกันและเพิ่งสร้างจากชื่อวิดีโอมันสามารถตรวจสอบได้บน GET ดังนั้นหากเข้าประตูร่อนและไม่ตรงกับสิ่งที่อยู่ใน doc 287171 จริง ๆ แล้วมันจะตอบสนอง …

2
Mozilla Public License (MPL 2.0) vs Lesser GNU General Public License (LGPL 3.0)
ฉันต้องการปล่อยห้องสมุดซอฟต์แวร์ที่เขียนด้วยภาษาโปรแกรมเชิงวัตถุ (Java) บนคลาสบนเว็บโฮสติ้งบริการซอร์สโค้ดซึ่งช่วยให้ส้อมของโครงการถูกรวมเข้ากับโครงการหลัก (GitHub ด้วยการดึง คำขอ) ฉันค้นคว้าบนเว็บและให้ความคิดมากเกี่ยวกับวิธีการอนุญาตให้ใช้สิทธิ์ซอฟต์แวร์ ฉันถูกต้องในสมมติฐานต่อไปนี้ (จากมุมมองของIANAL ) หรือไม่ ทั้ง LGPL และ MPL ส่งเสริมการแบ่งปันการแก้ไขซอฟต์แวร์ที่มีลิขสิทธิ์ LGPL / MPL ที่ใช้ในโครงการซอฟต์แวร์อื่น ๆ แทนที่จะต้องการให้ผู้ใช้ของไลบรารีที่แก้ไขแล้วเป็นเจ้าภาพแยกทางแยกของห้องสมุดฉันสามารถส่งเสริมการมีส่วนร่วมในไลบรารีดั้งเดิม (เช่นผ่านคำขอดึง) ข้อแตกต่างที่สำคัญคือวิธีที่รหัสลิขสิทธิ์ของ MPL / LGPL ต้องเชื่อมโยงเข้ากับโครงการ ไฟล์ต้นฉบับรหัส MPL สามารถคัดลอกโดยตรงไปยังโครงการซอฟต์แวร์ที่เป็นกรรมสิทธิ์ (อาจ) การเชื่อมโยงแบบคงที่ในขณะที่รหัสลิขสิทธิ์ LGPL จะต้องเชื่อมโยงแบบไดนามิก (เชื่อมโยงอย่างหลวม ๆ กับโครงการซอฟต์แวร์ที่เป็นกรรมสิทธิ์อาจเป็นไปได้) ไลบรารี่สำหรับไลบรารี่ซอฟต์แวร์ลิขสิทธิ์รุ่นอื่น) การเชื่อมโยงแบบไดนามิกและทำให้ LGPL กำหนดอุปสรรคเพิ่มเติมสำหรับการบรรจุผลิตภัณฑ์ซอฟต์แวร์ที่เป็นกรรมสิทธิ์โดยไม่ส่งเสริมการมีส่วนร่วมกับห้องสมุดซอฟต์แวร์โอเพ่นซอร์สมากกว่าการเชื่อมโยงแบบคงที่ (และ MPL) มีLGPL ที่ปรับเปลี่ยนซึ่งอนุญาตให้มีการเชื่อมโยงแบบสแตติก ขณะนี้ไม่มีความแตกต่างอื่น ๆ ที่เกี่ยวข้อง (จากIANALมุมมอง) …

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

4
async + await == ซิงค์หรือไม่
สะดุดกับโพสต์นี้ที่พูดถึงเกี่ยวกับการทำคำขอเว็บ async ตอนนี้ความเรียบง่ายกันถ้าในโลกแห่งความจริงสิ่งที่คุณต้องทำคือการขอ async และรอให้มันอยู่ในบรรทัดถัดไปนั่นไม่เหมือนกับการโทรแบบซิงค์ในตอนแรกใช่ไหม

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

6
กฎหมายของ Jamie Zawinski หมายถึงอะไร
ฉันต้องการคำอธิบายที่ถูกต้องเกี่ยวกับกฎหมายการห่อซอฟท์แวร์ของJamie Zawinski : ทุกโปรแกรมพยายามขยายจนกว่าจะสามารถอ่านจดหมายได้ โปรแกรมที่ไม่สามารถขยายได้จะถูกแทนที่ด้วยโปรแกรมที่สามารถทำได้
24 history  concepts 

8
ความแตกต่างพื้นฐานระหว่าง Unix และ Linux ในการออกแบบและด้านอื่น ๆ คืออะไร? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน7 ปีที่ผ่านมา ฉันอ่านประโยคนี้ต่อไป: Linux เป็นระบบที่คล้าย Unix แต่ไม่ใช่ Unix ฉันไม่รู้ว่าอะไรคือความแตกต่างที่แท้จริงระหว่างสองสิ่งนี้ ฉันรู้ว่า Linux มีแนวคิดมากมายจาก Unix และลิขสิทธิ์ของทั้งสองนั้นแตกต่างกัน นอกเหนือจากนั้นเนื่องจากฉันไม่ใช่ผู้เชี่ยวชาญในหนึ่งในนั้นฉันต้องการทราบว่ามีความแตกต่างพื้นฐานระหว่างพวกเขาในการออกแบบหรือด้านที่สำคัญอื่น ๆ

6
เหตุใดเราจึงต้องมีฮีปหากทุกอย่างสามารถทำได้อย่างมีประสิทธิภาพมากขึ้นในสแต็ก
นี่เป็นคำถามเกี่ยวกับคำถามที่ฉันถามเมื่อวานนี้ว่าทำไมทั้ง Stack และ Heap จึงมีความจำเป็นในแอปพลิเคชันที่เราใช้ในวันนี้ (และทำไมเราไม่สามารถไปกับ Heap ได้แทนที่จะเป็นทั้งสองอย่าง มาตรฐานเอกพจน์ที่จะไปด้วย) อย่างไรก็ตามการตอบกลับจำนวนมากระบุว่า Stack ไม่สามารถถูกแทนที่ได้เนื่องจากความจริงที่ว่าเร็วกว่าการพยายามจัดสรร / อ้างอิงฮีปหลายร้อยครั้ง (หรือหลายพัน) ฉันรู้ว่ามีปัญหากับการจัดสรรพื้นที่จัดเก็บข้อมูลแบบไดนามิกถ้าเราจัดการกับ Heap แต่ไม่มีวิธีแก้ไขปัญหานี้หรืออาจเป็นวิธีการปรับปรุงใน Stack เพื่อให้สามารถจัดการการจัดสรรหน่วยความจำแบบไดนามิกได้
24 stack  heap 

10
เครื่องรัฐเทียบกับหัวข้อ
Alan Cox เคยกล่าวไว้ว่า "คอมพิวเตอร์เป็นเครื่องสถานะหัวข้อสำหรับผู้ที่ไม่สามารถตั้งโปรแกรมเครื่องสถานะ" เนื่องจากการถามอลันโดยตรงไม่ใช่ตัวเลือกสำหรับฉันที่ต่ำต้อยฉันจึงอยากถามที่นี่: วิธีใดที่ทำให้การทำงานแบบมัลติเธรดในภาษาระดับสูงเช่น Java โดยใช้เพียงหนึ่งเธรดและเครื่องสถานะ ตัวอย่างเช่นจะเกิดอะไรขึ้นถ้ามี 2 กิจกรรมที่ต้องดำเนินการ (ทำการคำนวณและทำ I / O) และกิจกรรมหนึ่งสามารถบล็อกได้ ใช้ "เครื่องรัฐเท่านั้น" ทางเลือกที่ทำงานได้กับหลายเธรดในภาษาระดับสูง?

9
เพื่อนร่วมงานของฉันเป็นคนดี แต่การแสดงของเขาไม่น่าสนใจ ฉันจะบอกเจ้านายของฉันหรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันถูกวางในโครงการเมื่อประมาณสามเดือนที่ผ่านมาจนกระทั่งตอนนี้อยู่ระหว่างการพัฒนาโดยผู้พัฒนาที่เพิ่งได้รับการว่าจ้างคนใหม่เพราะมันตกอยู่เบื้องหลัง โครงการนี้เป็นส่วนต่อประสานกับอุปกรณ์การแพทย์ที่มีรายละเอียดปลีกย่อยและค่อนข้างซับซ้อนดังนั้นการวางคนคนหนึ่งในโครงการที่ไม่มีประสบการณ์ใน บริษัท อาจเป็นการตัดสินใจที่ไม่ดีจากมุมมองของผู้บริหาร อย่างไรก็ตามเมื่อฉันเริ่มทำงานกับฉันฉันรู้ว่า ... ดีมันแค่ไม่ทำงานเลย UI ดูดี แต่จริงๆแล้วมันก็ไม่ได้ทำอะไรมากเลยและสิ่งที่มันทำไม่ถูกต้อง อีกครั้งเพื่อความเป็นธรรมสิ่งนี้ส่วนใหญ่เป็นเพราะความจริงที่ว่านักพัฒนานี้ไม่ได้เตรียมที่จะเขียนอินเทอร์เฟซไปยังอุปกรณ์ของเราอย่างถูกต้อง อย่างไรก็ตามฉันก็รู้ได้อย่างรวดเร็วว่ารหัสที่ใช้อยู่นั้นเปราะและยากที่จะดูแล ตอนนี้ฉันไม่ได้อ้างว่าเป็นโปรแกรมเมอร์ที่ดีที่สุดในโลก ฉันทำงานกับคนที่ฉลาดมาก ๆ ซึ่งเป็นนักพัฒนาที่ดีกว่าฉัน แต่ฉันก็พยายามเขียนโค้ดที่เรียบง่ายที่สุดเท่าที่จะทำได้และมีประสิทธิภาพ ฉันทดสอบเช็คอินของฉัน หากฉันเห็นว่ารหัสของฉันยุ่งเหยิงและยากที่จะทำงานด้วย แต่เนิ่นๆฉันจะเปลี่ยนมัน ฉันได้พูดคุยกับเพื่อนร่วมงานของฉันสองสามครั้งเพื่อช่วยเขาเขียนรหัสที่ดีขึ้น นี่เป็นเรื่องยุ่งยากเล็กน้อยเพราะก) เขามีประสบการณ์มากกว่า 20 ปีในสาขานี้และฉันมีเพียง 5 คนเท่านั้นและข) เขาได้รับการว่าจ้างในฐานะผู้เชี่ยวชาญ UX และคนอื่น ๆ มองว่าเขาเป็นบุคคลที่มีประสบการณ์ ที่กล่าวว่าฉันแค่ไม่เห็นมัน เขาเป็นคนดีมากและเขาก็สมเหตุสมผล แต่ครั้งแล้วครั้งเล่าที่เขาตรวจสอบในรหัสที่เปราะบางทำงานเฉพาะในแง่ดีที่สุดของคดีและ 9 ครั้งจาก 10 ฉันจบการแก้ไขข้อบกพร่องในงานของเขา ดูเหมือนรหัสของเขาไม่ชำนาญและเห็นได้ชัดว่าเขาไม่มีระดับประสบการณ์ที่เขาอ้างว่ามีเมื่อเขาได้รับการว่าจ้าง มันมาถึงจุดที่ชั่วโมงพิเศษที่ฉันใช้ในการรีเฟรชรหัสของเขาและแก้ไขข้อบกพร่องของเขา วิธีที่ฉันเห็นฉันมีสองตัวเลือก: อย่าทำอะไรเลยทำก้นของฉันเพื่อให้แน่ใจว่าผลิตภัณฑ์นี้จะออกตรงเวลาและมีประสิทธิภาพและรอให้เขาล้มเหลวในอนาคต …

4
การทดสอบแต่ละหน่วยควรจะสามารถทำงานโดยอิสระจากการทดสอบอื่น ๆ
สมมติว่าคุณมีการทดสอบสำหรับสองวิธีในชั้นเรียน วิธีแรกรวบรวมข้อมูลจากระดับอื่นและวางลงในหน่วยความจำบางส่วนที่ไม่ขึ้นอยู่กับรันไทม์ (เช่นตาราง SQL) ดังนั้นข้อมูลทั้งหมดที่จัดการโดยการทดสอบนี้จะฮาร์ดโค้ดในการทดสอบ วิธีที่สองมีหน้าที่รับผิดชอบในการรับข้อมูลจากที่ที่วิธีแรกทิ้งไว้และเปลี่ยนมันในทางใดทางหนึ่ง (การคำนวณการเคลื่อนย้ายบางส่วนที่อื่น ฯลฯ ) ตอนนี้วิธีที่สองนี้อาจมีอินพุตฮาร์ดโค้ดเช่นเดียวกับแรกหรืออาจสันนิษฐานได้ว่าการทดสอบทั้งสองนั้นจะทำงานตามลำดับและสามารถเลือกได้ว่าการทดสอบครั้งแรกจะถูกเก็บไว้ที่ใดจากการทดสอบครั้งแรก หากคุณเลือกตัวเลือกที่สองคุณจะมีความคิดที่ดีว่าทั้งสองวิธีเล่นด้วยกันได้ดี แต่ถ้าการทดสอบครั้งที่ 1 ล้มเหลวการทดสอบทั้งหมดหลังจากนั้นจะล้มเหลวโดยนำประโยชน์จากการทดสอบไปช่วยแยกแมลงได้เร็วขึ้น หากคุณเลือกตัวเลือกแรกแต่ละวิธีจะแยกและทดสอบอย่างอิสระ แต่คุณจะไม่มีทางรู้ว่าพวกเขาสามารถทำงานร่วมกันได้อย่างถูกต้อง ตัวเลือกไหนดีกว่าที่นี่? มีทางเลือกบางอย่างเช่นมีการทดสอบเดี่ยวสำหรับแต่ละวิธีแยกด้วย hardcoding แล้วทดสอบที่ใหญ่กว่าที่มีทั้งสองวิธีในหนึ่งเดียว?

6
ค่าใช้จ่ายที่แท้จริงของ TDD เป็นอย่างไรเมื่อทั้งทีมคุ้นเคยกับมัน?
เปอร์เซ็นต์ของเวลาที่บันทึกและคิดต้นทุนในการทำ TDD ฉันคิดว่าเปอร์เซ็นต์ของต้นทุนและการเปลี่ยนแปลงของรางวัลระหว่างวงจรชีวิตของโครงการ ฉันคิดว่าระยะเริ่มต้นมีค่าใช้จ่ายมากขึ้น แต่มีรางวัลเล็ก ๆ น้อย ๆ ติดอยู่ เพิ่มเติมเกี่ยวกับ (ระหว่างการกู้แฟคตอริ่ง ) คุณจะได้รับประโยชน์จากการทดสอบ ฉันได้ยินทุกที่จาก30-50% ของเวลาของคุณคือการเขียนการทดสอบหน่วย อย่างไรก็ตามนั่นไม่ได้คำนึงถึงเวลาที่บันทึกไว้จากการเขียนการทดสอบเหล่านั้น ประสบการณ์ของทุกคนเกี่ยวกับสิ่งนี้คืออะไร เวสสตรีท แก้ไขสิ่งที่ประหยัดเวลาเช่นเดียวกับเวลา? ในการแก้ไขข้อผิดพลาดและ refactorablity?
24 productivity  tdd 

2
การทดสอบแบบรวมใช้ mocks หรือไม่
ขณะนี้ฉันอยู่ในชั้นเรียนสำหรับการทดสอบซอฟต์แวร์ที่สำหรับโครงการภาคการศึกษาของเราเราต้องทำการทดสอบหลายประเภทเช่นการทดสอบหน่วยและการทดสอบการรวม สำหรับการทดสอบการรวมตัวอาจารย์กล่าวว่าจะใช้ห้องสมุด mocks และการเยาะเย้ย (เช่น EasyMock และ Mockito) สำหรับการทดสอบการรวมกลุ่มของเรา ฉันเริ่มสับสนแล้ว การทดสอบการรวมเป็นการทดสอบนอกชั้นเรียนโมดูลบริการ ฯลฯ เหตุใด mocks และ stubs จึงเหมาะสมที่จะใช้ในการทดสอบการรวมหากคุณกำลังทดสอบคลาสและบริการที่หลากหลาย

3
การอนุญาตที่เหมาะสมในสถาปัตยกรรมแบบเลเยอร์
โดยทั่วไปแล้วฉันจะตัดสินใจเรื่องการอนุญาตในตัวควบคุมฝั่งเซิร์ฟเวอร์ของฉัน สิ่งเหล่านี้เป็นจุดสิ้นสุดที่สงบเมื่อเร็ว ๆ นี้ แต่ฉันคิดว่าเหมือนกันกับสถาปัตยกรรมประเภท MVC เพื่อประโยชน์ในการโต้แย้งสมมติว่ามันเป็นสิทธิ์ตามบทบาท วิธีการป้องกันจะได้รับการอธิบายประกอบหรือทำการตรวจสอบและส่งคืน 403s หากจำเป็น ตอนนี้เนื่องจากการให้สิทธิ์นั้นเป็นกฎทางธุรกิจจริง ๆ - ตัวอย่างเช่น "ผู้ดูแลระบบเท่านั้นที่สามารถแสดงรายการ X" ได้ฉันคิดว่าพวกเขาควรถูกเลเยอร์ลง เมื่อผู้ควบคุมขอให้ชั้นธุรกิจทำการดำเนินการบริการหรือชั้นธุรกิจจะแจ้งให้ผู้ควบคุมทราบว่าไม่ได้รับอนุญาต นี่เป็นแนวทางที่สมเหตุสมผลหรือไม่? มีข้อเสียนี้หรือไม่? ฉันไม่ชอบที่จะมี AuthorisationService ซึ่งเป็นส่วนหนึ่งของกฎการเข้ารหัสแบบสแตติกขั้นตอนเพื่อทำสิ่งนี้ แต่บางทีมันก็สมเหตุสมผลที่จะเก็บตรรกะการเข้าถึงทั้งหมดไว้ในที่เดียว มันเป็นความกังวลข้ามตัดที่ควรแยกจากกัน? ดังนั้นฉันจึงถามว่ามีใครทำเช่นนี้หรือไม่และวิธีการที่พวกเขาประสบความสำเร็จในวิธีที่สะอาดหรือว่ามีแหล่งข้อมูลที่ดีที่ฉันสามารถอ่านได้ ฉันใช้ Java fwiw แต่นี่เป็นคำถามที่ไม่เชื่อเรื่องภาษา ฉันได้ตรวจสอบคำถามที่เกี่ยวข้องที่นี่และพวกเขาบางมากบนพื้นและคำตอบ ตัวอย่างเช่น: การตรวจสอบและการอนุญาตในรูปแบบโดเมนและดำเนินการผ่าน Service Layer ถึง MVC ฉันกำลังอ่านเอกสารเกี่ยวกับความปลอดภัยของฤดูใบไม้ผลิซึ่งทำให้เกิดข้อโต้แย้งที่ดีเกี่ยวกับเรื่องนี้ซึ่งเป็นประเด็นที่ต้องคำนึงถึง แต่ฉันกังวลว่ามันเป็นเพียงแค่ "วิธีการในฤดูใบไม้ผลิ" และต้องการมุมมองที่กว้างขึ้น นอกจากนี้ยังเชื่อมโยงแอปพลิเคชันของคุณเข้ากับกรอบงานเฉพาะ

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