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

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

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

6
เราควรจัดการกับคุณสมบัติพิเศษของเครื่องสำอางใน Scrum sprints อย่างไร
ฉันกำลังอ่านเอกสารการต่อสู้และบอกว่างานใน Sprint ควรเป็น "ที่อาจเป็นไปได้" ฉันสับสนกับความหมายของสิ่งนี้ สมมติว่าใน Sprint 1 มีเป้าหมายคือ "แบบฟอร์มลงทะเบียนผู้ใช้" ฉันต้องเพิ่มรายละเอียดมากเท่าใดเพื่อให้พร้อมที่จะส่ง? ตัวอย่างเช่น: ฉันสามารถแสดงฟอร์มที่เรียบง่ายพร้อมฟิลด์โดยไม่ต้องใส่สไตล์แฟนซีใด ๆ และทำเครื่องหมายว่าเสร็จแล้ว ฉันสามารถทำการตรวจสอบฝั่งไคลเอ็นต์เป็นเครื่องหมายว่าทำเสร็จแล้ว แต่ฝั่งเซิร์ฟเวอร์ก็เป็นตัวเลือกหรือทั้งสองอย่าง ฉันยังสามารถเพิ่มเคล็ดลับเครื่องมือแฟนซี jQuery, เลื่อนเมาส์ไปวาง, captcha, สี, ป้ายกำกับสำหรับแบบฟอร์ม จากนั้นมีการจัดแต่งทรงผมมากมายเกี่ยวกับวิธีแสดงข้อความผิดพลาดบนหน้าจอ ฉันสามารถทำได้อย่างไม่มีที่สิ้นสุดในหนึ่งหัวข้อ ดังนั้นเราจะแบ่งมันอย่างไรและเมื่อไหร่ฉันจึงคิดว่ามันเป็นการขนส่งที่พร้อม หรือฉันต้องเขียนสิ่งที่เล็กที่สุดเท่าที่จะเป็นไปได้เช่นการแสดงข้อผิดพลาดป๊อปอัปหรือข้อความกล่องไฟเป็นงานย่อยและทำให้พวกเขาวิ่งได้ สิ่งนี้จะนำไปสู่งาน 1,000 โครงการสำหรับทั้งโครงการ ฉันหมายถึงอีกครั้งถ้าบางคนทำงานกับ Internet Explorer และบางคนสำหรับ Firefox แล้วฉันต้องแบ่งมันเป็นงานด้วย ต้องใช้เวลากับพวกเขาและเมื่อผู้จัดการถามฉันว่าคุณทำอะไรในเวลานั้นฉันจะไม่มีหน้าที่บอกอะไร แต่จริงๆแล้วพวกเขาทั้งหมดเป็นส่วนหนึ่งของการลงทะเบียนผู้ใช้

2
Lua จัดการกับทั้งจำนวนเต็มและจำนวนลอยได้อย่างไร
เท่าที่ฉันจำได้ว่าตัวเองเขียนโปรแกรมฉันได้รับการสอนไม่ให้เปรียบเทียบจำนวนจุดลอยตัวเพื่อความเท่าเทียมกัน ตอนนี้ในขณะที่อ่านการเขียนโปรแกรมใน Luaเกี่ยวกับnumberประเภทLua ฉันพบต่อไปนี้: ประเภทหมายเลขแสดงถึงจำนวนจริง (ทศนิยมสองตำแหน่งที่มีความแม่นยำ) Lua ไม่มีประเภทจำนวนเต็มเนื่องจากไม่ต้องการ มีความเข้าใจผิดอย่างกว้างขวางเกี่ยวกับข้อผิดพลาดทางเลขทศนิยมและบางคนกลัวว่าแม้การเพิ่มขึ้นอย่างง่ายสามารถไปแปลก ๆ กับตัวเลขจุดลอยตัว ความจริงก็คือเมื่อคุณใช้ double เพื่อแทนค่าจำนวนเต็มจะไม่มีข้อผิดพลาดในการปัดเศษเลย (เว้นแต่ว่าจำนวนจะมากกว่า 100,000,000,000,000) โดยเฉพาะอย่างยิ่งหมายเลข Lua สามารถแสดงจำนวนเต็มที่มีความยาวใด ๆ โดยไม่มีปัญหาการปัดเศษ ยิ่งไปกว่านั้นซีพียูที่ทันสมัยส่วนใหญ่ทำเลขคณิตทศนิยมให้เร็วที่สุด (หรือเร็วกว่า) เลขจำนวนเต็ม เป็นจริงสำหรับทุกภาษาหรือไม่ โดยพื้นฐานถ้าเราไม่ไปเกินจุดลอยเป็นสองเท่าเราจะปลอดภัยในเลขคณิตจำนวนเต็มหรือไม่ หรือเพื่อให้สอดคล้องกับชื่อคำถามมีอะไรพิเศษที่ Lua ทำกับnumberประเภทของมันดังนั้นมันจึงทำงานได้ดีทั้งแบบจำนวนเต็มและจุดลอยตัว?

2
ประสิทธิภาพหน่วยความจำของ Haskell - วิธีไหนดีกว่ากัน?
เรากำลังใช้ไลบรารีการบีบอัดเมทริกซ์โดยยึดตามไวยากรณ์ไวยากรณ์สองมิติที่ได้รับการแก้ไข ตอนนี้เรามีสองวิธีสำหรับประเภทข้อมูลของเรา - วิธีใดจะดีกว่าในกรณีที่ใช้หน่วยความจำ (เราต้องการบีบอัดบางอย่าง;)) ไวยากรณ์ประกอบด้วย NonTerminals ที่มี 4 โปรดักชั่นหรือเทอร์มินัลทางด้านขวามือ เราจะต้องใช้ชื่อของโปรดักชั่นเพื่อการตรวจสอบความเท่าเทียมกันและการย่อเล็กสุดไวยากรณ์ ครั้งแรก: -- | Type synonym for non-terminal symbols type NonTerminal = String -- | Data type for the right hand side of a production data RightHandSide = DownStep NonTerminal NonTerminal NonTerminal NonTerminal | Terminal Int -- | Data type …

1
เป็นรหัสแรกที่มีการโยกย้ายหรือเครื่องมือข้อมูลเซิร์ฟเวอร์ SQL เหมาะสมกว่าหรือไม่
ฉันได้รับสเป็คเพื่อสร้างเว็บไซต์ MVC4 ใหม่มันจะไม่ใหญ่เกินไปในตอนแรก แต่ฉันคิดว่ามันจะเติบโตขึ้นเมื่อธุรกิจได้รับแนวคิดใหม่ ๆ การใช้. NET 4.5 ASP.NET MVC4 และ EF ฉันต้องเลือกระหว่างโค้ดก่อนด้วยการโยกย้ายหรือ Sql Server Data Tools (SSDT) ​​สำหรับการจัดการฐานข้อมูลของฉัน ด้วย SSDT ฉันสามารถควบคุมฐานข้อมูลของฉันในโครงการซึ่งเป็นส่วนหนึ่งของโซลูชันของฉันและจัดการการเปลี่ยนแปลงทุกอย่างตั้งแต่การพัฒนาไปจนถึงการผลิตและอื่น ๆ โดยใช้ไฟล์ dacpac ประสบการณ์ของฉันเกี่ยวกับโค้ดแรกจาก MVC3 ไม่ได้ใช้เกินกว่าการพัฒนาเนื่องจากตัวเลือกฐานข้อมูลที่ จำกัด มันจะจบลงด้วยการวาง Db ลงบนการเปลี่ยนแปลงรูปแบบหรือจัดการกับการเปลี่ยนแปลง Db ด้วยตนเอง อย่างไรก็ตามฉันถูกชักจูงให้เชื่อกับการโยกย้าย MVC4 ซึ่งไม่เป็นเช่นนั้นอีกต่อไปและตอนนี้ฉันสามารถผลักดันการอัปเดตไปยัง Db ได้แล้ว ดังนั้นคำถามของฉันคือแบบใดที่มีประสิทธิภาพมากที่สุดในการใช้โดยอิงจากการประหยัดเวลา / ความพยายามในการพัฒนา แต่ยังสามารถปรับขนาดได้และสามารถจัดการกับการเปลี่ยนแปลงการผลิตได้ ฉันชอบโค้ดก่อนและความสามารถในการสร้างฐานข้อมูลของฉันจากแบบจำลองตอนนี้การแนะนำการย้ายข้อมูลทำให้สามารถใช้งานได้จริงหรือไม่?

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

3
ทำไมเราไม่นำหน้า Enums, คลาส Abstract และ Structs?
ชุมชน C # ได้ใช้คำนำหน้า "I" อย่างแพร่หลายเพื่อแสดงถึงอินเทอร์เฟซที่แม้แต่โปรแกรมเมอร์ที่ไม่มีประสบการณ์มากที่สุดก็รู้ที่จะใช้ แล้วทำไมเราถึงไม่ใส่คำนำหน้า enums, คลาส abstract หรือ structs (อาจเป็น "E", "A" และ "S" ตามลำดับ)? ตัวอย่างเช่นถ้าเราทำเครื่องหมายคลาสนามธรรมทั้งหมดด้วย "A" มันจะให้ข้อมูลที่มีค่าเกี่ยวกับประเภทนั้นซึ่งในขณะที่มันสามารถอนุมานได้ก็ไม่ชัดเจนทันที โปรดทราบว่าฉันไม่ได้สนับสนุนการเปลี่ยนแปลงนี้ฉันแค่พยายามเข้าใจว่าทำไมเราไม่ทำสิ่งนี้ กระทู้นี้ตอบว่าทำไมเราถึงใช้คำนำหน้า "ฉัน" แต่ไม่ตอบว่าทำไมเราไม่ใช้คำนำหน้าอื่น ๆ

3
การทดสอบการรวมเข้าด้วยกันควรรวมอยู่ในการรวมอย่างต่อเนื่อง (CI) หรือไม่
สมมติว่าเรากำลังพัฒนาเว็บแอปพลิเคชันและฮัดสันทำงานทั่วไปเช่นคอมไพล์การทดสอบหน่วยและการวิเคราะห์โค้ดแบบคงที่ แต่ส่วนที่ยุ่งยากคือ: ฮัดสันปรับใช้และเริ่มต้นเซิร์ฟเวอร์แอปพลิเคชันเพื่อทำการทดสอบการรวมเมื่องานก่อนหน้านี้เสร็จสิ้น นั่นหมายถึงบางสิ่งที่ยากเช่นการเชื่อมต่อฐานข้อมูลการเชื่อมต่อแอพพลิเคชั่นส่วนที่ 3 ฟังพอร์ตซ็อกเก็ตตัวแปรสภาพแวดล้อมเซิร์ฟเวอร์เริ่มต้นส่งข้อผิดพลาด ฯลฯ เราต้องตั้งค่าและทำลายสิ่งเหล่านี้อย่างถูกต้องทุกครั้ง ที่แย่กว่านั้นการทดสอบการรวมสามารถทำลายการทดสอบการรวมได้อย่างง่ายดาย คุณคิดว่าควรรวมการทดสอบการรวมเข้ากับการรวมเข้าด้วยกันอย่างต่อเนื่อง (CI) หรือไม่ เป็นด้วยตนเองได้ไหม หรือลดความซับซ้อนของการทดสอบการรวม?

5
รายการ Sprint จะใช้เวลานานกว่าที่คาดว่าจะแล้วเสร็จ เราควรทำอย่างไร
เราควรทำอย่างไรถ้ารายการในการต่อสู้ใช้เวลานานกว่าที่คาดไว้? ฉันถามสิ่งนี้เพราะฉันสังเกตเห็นรายการที่ผู้พัฒนาพยายามดิ้นรนเพื่อให้เสร็จสมบูรณ์เนื่องจากมันยากขึ้นกว่าที่คิดไว้ในตอนแรก ในสถานการณ์เช่นนี้เราควร ลบรายการออกจากการวิ่งกลับไปที่แคตตาล็อกผลิตภัณฑ์เพื่อให้เราสามารถทำตามระยะเวลาการวิ่งได้ ย้ายไปที่รายการ sprint ที่ง่ายขึ้นและปล่อย sprint ที่มีปัญหาจนถึงจุดสิ้นสุด แสดงให้เห็นถึงเหตุผลในการทบทวนวิ่งทำไมรายการไม่สามารถเสร็จสิ้นในการวิ่งปัจจุบันให้กับผู้มีส่วนได้เสีย? ในอนาคตเราจะหลีกเลี่ยงสถานการณ์เช่นนี้ได้อย่างไร? เป็นเพราะการขาดการวางแผนล่วงหน้าหรือเราไม่ได้พยายามแบ่งรายการ sprint ออกเป็นรายการเล็ก ๆ ?
11 scrum  sprint 

2
วิธีการทำให้เป็นโมดูลและแพคเกจห้องสมุด Javascript ฝั่งไคลเอ็นต์วันนี้?
ฉันได้ติดตามกับระบบนิเวศ JS ฝั่งไคลเอ็นต์ที่ทันสมัยและอ่านข้อมูลเกี่ยวกับ CommonJS และ AMD (รวมถึงเครื่องมือที่เกี่ยวข้อง - เบราว์เซอร์, requirejs, onejs, jam, อื่น ๆ อีกมากมาย) ถ้าฉันกำลังเขียนไลบรารี Javascript ฉันจะทำให้เป็นโมดูล / แพ็กเกจได้อย่างไรซึ่งมันสามารถเข้าถึงได้อย่างกว้างขวางที่สุด (โดยผู้ใช้ที่สบถโดย CommonJS, AMD และโดยเฉพาะอย่างยิ่ง) ห้องสมุดยอดนิยมเช่น jQuery ดูเหมือนจะใช้การต่อไฟล์โรงเรียนเก่าสำหรับการสร้างตัวเองและตรวจสอบแบบไดนามิกว่าควรเขียนไปยังexportsหรือบริบททั่วโลก ตอนนี้ฉันกำลังทำสิ่งเดียวกัน แต่ข้อเสียเปรียบหลักคือถ้าฉัน (ต่างจาก jQuery) ขึ้นอยู่กับห้องสมุดไม่กี่แห่งก็ดีที่ไม่ต้องขอให้ผู้ใช้รวมชุด transitive ด้วยตนเองไว้ล่วงหน้า (ถึงแม้ว่าตอนนี้ฉันเพิ่งมีการขึ้นต่อกันสองครั้ง) และแน่นอนว่าเนมสเปซทั่วโลกเป็นมลพิษ หรือบางทีมันอาจจะดีที่สุดที่จะสร้างไลบรารี่หลายเวอร์ชันสำหรับแต่ละบริบท? ฉันยังสงสัยเกี่ยวกับบรรจุภัณฑ์และการเผยแพร่ มีหลายระบบ แต่ฉันเชื่อว่าระบบที่สำคัญคือ bower ซึ่งง่ายต่อการจัดการเนื่องจากทั้งหมดนี้ใช้งานได้จริง อย่างไรก็ตามฉันสงสัยว่าฉันควรกำหนดเป้าหมายไปยังระบบแพ็กเกจอื่นเช่นองค์ประกอบ (ซึ่งต้องใช้ CommonJS) หรือไม่ มีประเด็นอื่น ๆ ที่เกี่ยวข้องที่ฉันควรทราบหรือไม่? มีตัวอย่างโครงการที่ดีที่จะติดตามทั้งหมดนี้หรือไม่?

7
บอร์ด Agile แบบกายภาพนั้น“ ดีกว่า” เสมอกว่าเครื่องมืออิเล็กทรอนิกส์หรือไม่?
เมื่อใดก็ตามที่คำถามเกิดขึ้นว่าเครื่องมือ Agile ที่จะใช้มีใครบางคนที่ตอบว่า "อย่าใช้เครื่องมืออิเล็กทรอนิกส์เพราะคุณจะเสียความได้เปรียบที่เห็นได้อย่างชัดเจนซึ่งจะสร้างบทสนทนาของทีมได้ดีกว่า" เป็นเช่นนี้เสมอหรือมีบริบทใดบ้างที่เครื่องมืออิเล็กทรอนิกส์เป็นตัวเลือกที่ดีกว่า ข้อดีและข้อเสียของแต่ละวิธีมีอะไรบ้าง
11 agile  tools 

1
การจัดเก็บอักขระ EOF (สิ้นสุดไฟล์) ในประเภท char
ผมอ่านในเดนนิสริตชี่ภาษา C Programmingหนังสือที่intจะต้องนำมาใช้สำหรับตัวแปรที่จะถือ EOF - เพื่อทำให้มันมีขนาดใหญ่พอที่จะสามารถเก็บค่า EOF - charไม่ได้ แต่รหัสต่อไปนี้ทำงานได้ดี: #include<stdio.h> main() { char c; c=getchar(); while(c!=EOF) { putchar(c); c=getchar(); } } เมื่อไม่มีอินพุตให้getcharส่งคืน EOF และในโปรแกรมข้างต้นตัวแปรที่cมีประเภทถ่านสามารถเก็บไว้ได้สำเร็จ ทำไมจึงใช้งานได้ ตามคำอธิบายในหนังสือข้างต้นรหัสไม่ควรทำงาน
11 c 

2
การจัดการการสมัครสมาชิกยอดคงเหลือและการเปลี่ยนแปลงแผนการกำหนดราคา [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว คำนำ เป้าหมายของฉันคือการสร้างรหัสที่สามารถใช้ซ้ำได้สำหรับหลายโครงการ (และเผยแพร่บน GitHub) เพื่อจัดการการสมัครสมาชิก ฉันรู้เกี่ยวกับผู้ให้บริการการเรียกเก็บเงินแบบสไทรพ์และเกิดซ้ำ แต่นั่นไม่ใช่สิ่งที่โมดูลนี้มีเป้าหมาย มันควรจะเป็น wrapper / helper สำหรับการคำนวณยอดคงเหลือในบัญชีการแจ้งเตือนง่าย ๆ ในการต่ออายุการสมัครและจัดการการคำนวณราคา มีหลายประเทศที่คุณไม่สามารถใช้การเรียกเก็บเงินที่เกิดขึ้นเนื่องจากผู้ให้บริการหรือความเป็นไปได้ในการชำระเงินที่มีการสนับสนุนต่ำหรือไม่มีการสนับสนุนหรือมีราคาแพงเกินไป (micropayments) และมีคนที่ไม่ต้องการใช้การเรียกเก็บเงินที่เกิดขึ้นประจำ แต่ชำระค่าใช้จ่ายด้วยตนเอง / avingg ใบแจ้งหนี้ ณ สิ้นปี ดังนั้นโปรดอย่าแนะนำการเรียกเก็บเงินแบบจ่ายซ้ำ PayPal หรือบริการที่คล้ายกันซ้ำ ๆ สถานการณ์ สมมติว่าคุณมีรูปแบบที่สามารถสมัครเป็นสมาชิกแผน (เช่นUser) โมเดลนี้มีฟิลด์ที่เก็บตัวบ่งชี้ของแผนการสมัครสมาชิกที่เป็นสมาชิกในปัจจุบัน ดังนั้นในการเปลี่ยนแปลงแผนทุกครั้งการเปลี่ยนแปลงจะถูกบันทึกไว้ มีโมเดล (เช่นSubscriptionPlanChanges) ที่มีฟิลด์ต่อไปนี้บันทึกการเปลี่ยนแปลงที่กล่าวถึง: subscriberเกี่ยวข้องกับรูปแบบการสมัคร ( Userในกรณีนี้) from_plan การกำหนดตัวระบุแผนที่โมเดลมีไว้ก่อนการเปลี่ยนแปลง to_plan การกำหนดตัวระบุแผนรุ่นที่เลือกไว้ตอนนี้ created_at …

10
เครื่องมือ / คำแนะนำเกี่ยวกับวิธีการปฏิเสธอาร์กิวเมนต์คุณภาพของรหัสครอบคลุม
ตอนนี้ฉันรู้ว่าผู้คนสามารถพิจารณาคำถามนี้ซ้ำหรือถามหลายครั้งในกรณีนี้ฉันจะขอบคุณลิงก์ไปยังคำถามที่เกี่ยวข้องพร้อมคำตอบสำหรับคำถามของฉัน เมื่อเร็ว ๆ นี้ฉันไม่เห็นด้วยกับบางคนเกี่ยวกับการครอบคลุมโค้ด ฉันมีกลุ่มคนที่ต้องการให้ทีมงานของเราลดการมองการครอบคลุมโค้ดทั้งหมดโดยอ้างว่าการครอบคลุม 100% ไม่ได้หมายถึงการทดสอบคุณภาพที่ดีและรหัสคุณภาพดี ฉันสามารถผลักดันกลับได้โดยการขายอาร์กิวเมนต์ที่ Code Coverage บอกฉันว่ายังไม่ได้ทดสอบอย่างแน่นอนและช่วยให้เรามุ่งเน้นไปที่พื้นที่เหล่านั้น (ข้างต้นได้รับการกล่าวถึงในลักษณะคล้ายกันในคำถาม SO อื่น ๆ เช่นนี้ - /programming/695811/pitfalls-of-code-coverage ) ข้อโต้แย้งจากคนเหล่านี้คือ - จากนั้นทีมจะตอบสนองโดยการสร้างการทดสอบคุณภาพต่ำอย่างรวดเร็วและทำให้เสียเวลาโดยไม่เพิ่มคุณภาพที่สำคัญ ในขณะที่ผมเข้าใจมุมมองของผมกำลังมองหาวิธีที่จะทำให้เป็นกรณีที่แข็งแกร่งมากขึ้นสำหรับความคุ้มครองรหัสโดยการแนะนำเครื่องมือที่มีประสิทธิภาพมากขึ้น / (Functional, Statement,Decision, Branch, Condition, State, LCSAJ, path, jump path, entry/exit, Loop, Parameter Value etc)กรอบที่ดูแลเกณฑ์ที่ครอบคลุมมากขึ้น สิ่งที่ฉันกำลังมองหาคือข้อเสนอแนะสำหรับการรวมกันของเครื่องมือครอบคลุมรหัสและการปฏิบัติ / กระบวนการที่จะไปกับพวกเขาซึ่งสามารถช่วยฉันตอบโต้ข้อโต้แย้งดังกล่าวในขณะที่รู้สึกสะดวกสบายกับคำแนะนำของฉัน ฉันยังยินดีรับฟังความคิดเห็น / ข้อเสนอแนะใด ๆ ที่ยึดตามประสบการณ์ / ความรู้ของคุณเกี่ยวกับวิธีการโต้แย้งเช่นกันเพราะในขณะที่อัตนัยการครอบคลุมโค้ดได้ช่วยให้ทีมของฉันตระหนักถึงคุณภาพของรหัสและคุณค่าของการทดสอบมากขึ้น แก้ไข: เพื่อลดความสับสนเกี่ยวกับการเข้าใจจุดอ่อนของการครอบคลุมโค้ดทั่วไปฉันต้องการชี้ให้เห็นว่าฉันไม่ได้อ้างถึงเครื่องมือ …

3
จัดเก็บข้อมูลลับอย่างปลอดภัยในเว็บแอปพลิเคชันฝั่งไคลเอ็นต์
ฉันมีเว็บแอปพลิเคชันที่จะเป็นเทคโนโลยีฝั่งไคลเอ็นต์ทั้งหมด (HTML, CSS, JavaScript / AngularJS, ฯลฯ ... ) เว็บแอปพลิเคชันนี้กำลังโต้ตอบกับ REST API เพื่อเข้าถึงและแก้ไขข้อมูล ตอนนี้มันยังไม่ได้ตัดสินใจว่าจะใช้ระบบรับรองความถูกต้องประเภทใด REST API จากความเข้าใจของฉันระบบการตรวจสอบความถูกต้อง API ประเภทใด ๆ (คีย์ API, OAuth 1/2, ฯลฯ ... ) จะมีข้อมูลบางอย่างที่ต้องเก็บเป็นความลับมิฉะนั้นการเข้าถึงอาจถูกบุกรุกได้ สำหรับคีย์ API คีย์เหล่านั้นต้องเป็นความลับสำหรับ OAuth 2 ไคลเอนต์ลับ / โทเค็นการเข้าถึง / โทเค็นการรีเฟรชจำเป็นต้องเก็บเป็นความลับฉันแน่ใจว่าสี่คีย์ที่เกี่ยวข้องใน OAuth 1 ต้องเก็บเป็นความลับ (ไม่ใช่ มีประสบการณ์มากเกินไปกับ OAuth 1) ฉันพยายามคิดว่าหากมีวิธีการจัดเก็บสิ่งที่เป็นความลับนี้ในเว็บแอปพลิเคชันฝั่งไคลเอนต์ที่บริสุทธิ์โดยไม่มีการเรียงลำดับชั้นกลางบนฝั่งเซิร์ฟเวอร์ ฉันพยายามคิดเกี่ยวกับสิ่งนี้และฉันไม่สามารถนึกถึงสถานที่ที่จะทำเช่นนั้นได้ ฉันหมายถึงฉันไม่สามารถเก็บไว้ในจาวาสคริปต์เพราะทุกคนสามารถดูแหล่งข้อมูลหรือเปิดคอนโซลและรับข้อมูลได้ ฉันไม่แน่ใจ 100% …

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