คำถามติดแท็ก language-agnostic

แท็กนี้มีไว้สำหรับคำถามที่ไม่เฉพาะกับภาษาการเขียนโปรแกรมหรือสภาพแวดล้อม

5
มีกรอบการทดสอบหน่วยผู้ไม่เชื่อเรื่องพระเจ้าหรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันสงสัยในการเขียนรหัสการทำงานใหม่อยู่เสมอ - การย้ายรหัสจะไม่มีข้อยกเว้น อย่างไรก็ตามด้วยการถือกำเนิดของ TDD และการทดสอบอัตโนมัติมันมีความเหมาะสมมากกว่าในการเขียนและสร้างรหัสใหม่ ไม่มีใครรู้ว่ามีเครื่องมือ TDD ที่สามารถใช้ในการย้ายรหัสเก่าได้หรือไม่? เป็นการดีที่คุณสามารถทำต่อไปนี้: เขียนการทดสอบหน่วยผู้ไม่เชื่อเรื่องภาษาสำหรับรหัสเก่าที่ผ่าน (หรือล้มเหลวหากคุณพบข้อบกพร่อง!) เรียกใช้การทดสอบหน่วยในฐานรหัสอื่น ๆ ของคุณที่ล้มเหลว เขียนรหัสในภาษาใหม่ของคุณที่ผ่านการทดสอบโดยไม่ต้องดูรหัสเก่า อีกทางเลือกหนึ่งคือการแยกขั้นตอนที่ 1 เป็น "การทดสอบหน่วยการเขียนในภาษา 1" และ "การทดสอบหน่วยพอร์ตเป็นภาษา 2" ซึ่งเพิ่มความพยายามอย่างมากและจำเป็นต้องพิสูจน์ว่าฐานรหัสเก่ากำลังจะหยุดหลังจากนั้น พอร์ต (นั่นคือคุณจะไม่ได้รับประโยชน์จากการรวมอย่างต่อเนื่องในฐานรหัสนี้) แก้ไข: มันคุ้มที่จะสังเกตคำถามนี้ใน StackOverflow

2
โดยทั่วไปการทำ bubbling ของเหตุการณ์ทำงานอย่างไรและมีความหมายเหมือนกันกับการเผยแพร่เหตุการณ์
ฉันพยายามล้อมรอบงานทั่วไปและหลักการของการจัดกิจกรรมในระบบที่ขับเคลื่อนด้วยเหตุการณ์ (ย่อย) แม้ว่าฉันจะใช้มันในบางครั้งเช่น Javascript, Flash (Actionscript 2 และ 3) และได้สร้างระบบการส่งเหตุการณ์อย่างง่ายใน PHP สำหรับตัวเองในครั้งเดียวฉันไม่เคยเข้าใจการทำ bubbling และ / หรือ การขยายพันธุ์ที่ดี คำถามแรก: การ พ้องเหตุการณ์หมายถึงการเผยแพร่เหตุการณ์หรือไม่ คำถามที่สอง: ฉันถูกต้องในการทำความเข้าใจของฉันว่าเมื่อเหตุการณ์ "ฟองสบู่" นี้หมายความว่ามันได้รับ "ย้าย" ขึ้นลำดับชั้นของวัตถุ? คำถามที่สามและสำคัญที่สุด: หากความเข้าใจในคำถาม 2 ถูกต้อง; สิ่งนี้คือ "การเคลื่อนย้าย" ถึงลำดับชั้นของวัตถุที่นำมาใช้โดยทั่วไป? โดยทั่วไปแล้วมันหมายความว่าวัตถุแม่ "redispatches" เหตุการณ์เดียวกันกับผู้ปกครองของมัน (จนกว่าจะถึงวัตถุราก)? และถ้าเป็นเช่นนั้น วัตถุเหล่านี้ทั้งหมดในลำดับชั้นจำเป็นต้องฟังลูก ๆ ของพวกเขาสำหรับเหตุการณ์เหล่านี้หรือฉันขาดสิ่งสำคัญในการทำความเข้าใจเกี่ยวกับเหตุการณ์เดือดร้อนซึ่งไม่มีความจำเป็นที่จะต้องให้วัตถุแม่ลงทะเบียนด้วยตนเองในฐานะผู้ฟังเหตุการณ์วัตถุเด็ก หากคุณสามารถแสดงให้เห็นถึงหลักการพื้นฐานเหล่านี้โดยใช้รหัสหลอกๆบางอย่างฉันจะขอบคุณมาก ๆ

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

7
เทคนิคการแยกวิเคราะห์ XML
ฉันพบว่า XML ค่อนข้างยุ่งยากในการประมวลผลเสมอ ฉันไม่ได้พูดเกี่ยวกับการใช้งานตัวแยกวิเคราะห์ XML: ฉันกำลังพูดถึงการใช้ตัวแยกวิเคราะห์ที่ใช้กระแสอยู่เช่น SAX parser ซึ่งประมวลผลโหนด XML โดยโหนด ใช่มันง่ายมากที่จะเรียนรู้ API ต่างๆสำหรับ parsers เหล่านี้ แต่เมื่อใดก็ตามที่ฉันดูโค้ดที่ประมวลผล XML ฉันมักจะพบว่ามันค่อนข้างซับซ้อน ปัญหาที่สำคัญดูเหมือนว่าเอกสาร XML จะถูกแยกออกเป็นส่วน ๆ อย่างมีเหตุผลและแต่ละประเภทข้อมูลและคุณลักษณะมักจะแยกออกจากข้อมูลจริงบางครั้งโดยการซ้อนหลายระดับ ดังนั้นเมื่อประมวลผลโหนดเฉพาะใด ๆ เป็นรายบุคคลจำเป็นต้องมีสถานะพิเศษจำนวนมากเพื่อกำหนดว่าเราอยู่ที่ไหนและต้องทำอะไรต่อไป ตัวอย่างเช่นให้ข้อมูลโค้ดจากเอกสาร XML ทั่วไป: <book> <title>Blah blah</title> <author>Blah blah</author> <price>15 USD</price> </book> ... ฉันจะทราบได้อย่างไรเมื่อพบโหนดข้อความที่มีชื่อหนังสือ สมมติว่าเรามีตัวแยกวิเคราะห์ XML ง่ายซึ่งทำหน้าที่เหมือน iterator ให้เราโหนดถัดไปในเอกสาร XML XMLParser.getNextNode()โทรทุกครั้งที่เรา ฉันพบว่าตัวเองเขียนโค้ดอย่างหลีกเลี่ยงไม่ได้: boolean insideBookNode …

6
ความแตกต่างระหว่างเว็บไซต์และเว็บแอปพลิเคชันคืออะไร
คุณแยกความแตกต่างของเว็บแอปพลิเคชันจากเว็บไซต์อย่างไร เป็นภาษา / แพลตฟอร์มไม่เชื่อเรื่องพระเจ้า

7
การมีเพศสัมพันธ์ ปฏิบัติที่ดีที่สุด
ติดตามจากกระทู้นี้ฉันเริ่ม รูปแบบซิงเกิล ฉันคิดว่าชั้นเรียนของฉันเป็นอย่างไรและวิธีที่ดีที่สุดในการมีเพศสัมพันธ์แบบหลวม ๆ โปรดจำไว้ว่าฉันเป็นโปรแกรมเมอร์ใหม่ (4 เดือนในงานแรกของฉัน) และนี่เป็นข้อพิจารณาแรกที่ฉันได้รับจากสิ่งนี้และฉันกระตือรือร้นที่จะเข้าใจแนวคิดนี้ แล้วอะไรคือข้อต่อหลวม ๆ และการมีเพศสัมพันธ์อย่างหนัก? ในโครงการปัจจุบันของฉัน (และโครงการแรก) ฉันกำลังทำงานในโครงการ ac # winforms ซึ่งส่วน GUI สร้างวัตถุและ subcribes กับกิจกรรมของพวกเขาเมื่อพวกเขาถูกทริกเกอร์ GUI สร้างวัตถุอื่น (ในตัวอย่างนี้ datagridview (คลาส) ที่ฉันได้สร้างที่ล้อมรอบ DataGridview มาตรฐานและเพิ่มฟังก์ชั่นเพิ่มเติม) และแนบไปกับ GUI นี่คือการแต่งงานกันหรือไม่ดี? ฉันไม่ต้องการรับนิสัยที่ไม่ดีและเริ่มเขียนโค้ดไม่ดีดังนั้นฉันจะขอบคุณคำตอบของคุณ

4
ฉันควรทำอย่างไรเมื่อการล็อคในแง่ดีไม่ทำงาน
ฉันมีสถานการณ์ต่อไปนี้: ผู้ใช้ทำให้GETคำขอไป/projects/1และได้รับการETag ผู้ใช้ทำการร้องขอPUT/projects/1กับ ETag จากขั้นตอน # 1 ผู้ใช้ทำการร้องขอ PUT อื่น/projects/1โดยใช้ ETag จากขั้นตอนที่ # 1 โดยปกติคำขอ PUT ที่สองจะได้รับการตอบสนอง 412 เนื่องจาก ETag ตอนนี้ค้าง - คำขอ PUT แรกแก้ไขทรัพยากรดังนั้น ETag จึงไม่ตรงกันอีกต่อไป แต่จะเกิดอะไรขึ้นถ้าคำขอ PUT ทั้งสองนั้นถูกส่งในเวลาเดียวกัน คำขอ PUT แรกไม่มีเวลาในการประมวลผลและอัปเดตทรัพยากรก่อน PUT # 2 มาถึงซึ่งทำให้ PUT # 2 เขียนทับ PUT # 1 จุดรวมของการล็อคในแง่ดีคือการที่จะไม่เกิดขึ้น ...


5
หาก - อื่น ๆ บันไดที่ควรจะจับเงื่อนไขทั้งหมด - ควรเพิ่มประโยคสุดท้ายซ้ำซ้อน?
นี่คือสิ่งที่ฉันทำมากเมื่อเร็ว ๆ นี้ ตัวอย่าง: setCircle(circle, i, { current }) { if (i == current) { circle.src = 'images/25CE.svg' circle.alt = 'Now picking' } else if (i < current) { circle.src = 'images/25C9.svg' circle.alt = 'Pick failed' } else if (i > current) { circle.src = 'images/25CB.svg' circle.alt = 'Pick chance' …

2
ความปลอดภัยของเธรดสามารถให้บริการได้อย่างไรโดยภาษาการเขียนโปรแกรมคล้ายกับวิธีที่ความปลอดภัยของหน่วยความจำมีให้โดย Java และ C #
Java และ C # ให้ความปลอดภัยของหน่วยความจำโดยการตรวจสอบขอบเขตของอาเรย์และตัวชี้ dereferences กลไกใดที่สามารถนำไปใช้กับภาษาโปรแกรมเพื่อป้องกันความเป็นไปได้ของสภาพการแข่งขันและการหยุดชะงัก

4
คอมไพเลอร์กู้คืนจากข้อผิดพลาดประเภทได้อย่างไร
ฉันได้อ่านบทความบทความและส่วน 4.1.4 ตอนที่ 4 ของคอมไพเลอร์: หลักการเทคนิคและเครื่องมือ (รุ่นที่ 2) (หรือที่รู้จักกันในชื่อ "The Dragon Book") ซึ่งทุกคนกล่าวถึงหัวข้อการกู้คืนข้อผิดพลาดทางไวยากรณ์ อย่างไรก็ตามหลังจากทดลองกับคอมไพเลอร์สมัยใหม่หลาย ๆ ตัวฉันได้เห็นแล้วว่าพวกเขากู้คืนจากข้อผิดพลาดทางความหมายเช่นเดียวกับข้อผิดพลาดทางไวยากรณ์ ฉันเข้าใจอัลกอริทึมและเทคนิคที่อยู่เบื้องหลังคอมไพเลอร์ที่กู้คืนจากข้อผิดพลาดเกี่ยวกับวากยสัมพันธ์ แต่ฉันไม่เข้าใจว่าคอมไพเลอร์สามารถกู้คืนจากข้อผิดพลาดทางความหมายได้อย่างไร ขณะนี้ฉันกำลังใช้รูปแบบผู้เยี่ยมชมที่แตกต่างกันเล็กน้อยเพื่อสร้างรหัสจากแผนผังไวยากรณ์นามธรรมของฉัน พิจารณาคอมไพเลอร์ของฉันรวบรวมการแสดงออกต่อไปนี้: 1 / (2 * (3 + "4")) คอมไพเลอร์จะสร้างแผนผังไวยากรณ์นามธรรมต่อไปนี้: op(/) | ------- / \ int(1) op(*) | ------- / \ int(2) op(+) | ------- / \ int(3) str(4) ขั้นตอนการสร้างรหัสจะใช้รูปแบบผู้เยี่ยมชมเพื่อสำรวจทรีไวยากรณ์แบบนามธรรมซ้ำ ๆ และดำเนินการตรวจสอบชนิด …

4
เป็นไปตามเงื่อนไขหรือไม่ที่จะมีผลข้างเคียง? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันกำลังเรียนหลักสูตรโครงสร้างข้อมูลระดับกลางเป็นสิ่งที่จำเป็นสำหรับการเข้าสู่โปรแกรม CS MS ที่มหาวิทยาลัยทุกคนในอเมริกาเคยได้ยิน โค้ดหนึ่งบรรทัดที่เขียนในชั้นเรียนจับตาฉัน: if (a > 33 | b++ < 54) {...} สิ่งนี้จะไม่ผ่านการตรวจสอบรหัสที่ทำงานของฉัน หากคุณเขียนโค้ดเช่นนี้ในการสัมภาษณ์นี่จะเป็นการประท้วงครั้งสำคัญกับคุณ (นอกเหนือจากการเป็นเงื่อนไขกับผลข้างเคียงมันก็ฉลาดที่ค่าใช้จ่ายของความชัดเจน) ในความเป็นจริงฉันไม่เคยเห็นเงื่อนไขที่มีผลข้างเคียงและ Googling ก็ไม่ได้ผลมากนักเช่นกัน นักเรียนอีกคนอยู่ข้างหลังเลิกเรียนเพื่อถามเกี่ยวกับเรื่องนี้ด้วยดังนั้นฉันไม่ใช่คนเดียวที่คิดว่านี่แปลก แต่อาจารย์ค่อนข้างแน่วแน่ว่านี่เป็นรหัสที่ยอมรับได้และเขาจะเขียนอะไรทำนองนั้นในที่ทำงาน (งาน FT ของเขาคือ SWE หลักที่ บริษัท คุณเคยได้ยินมา) ฉันไม่สามารถจินตนาการถึงโลกที่บรรทัดของรหัสนี้จะเป็นที่ยอมรับได้ ฉันผิดหรือเปล่า? ตกลงไหม กรณีทั่วไปมากขึ้น: เงื่อนไขกับผลข้างเคียง? เหล่านั้นเคยตกลง?

12
เหตุใดภาษาจึงไม่มีความสามารถในการเปรียบเทียบค่ากับค่าอื่นมากกว่าหนึ่งค่า [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา พิจารณาสิ่งต่อไปนี้: if(a == b or c) ในภาษาส่วนใหญ่จะต้องเขียนเป็น: if(a == b or a == c) ซึ่งค่อนข้างยุ่งยากและทำซ้ำข้อมูล ฉันรู้ว่าไวยากรณ์ตัวอย่างด้านบนของฉันค่อนข้าง clunky เล็กน้อย แต่ฉันแน่ใจว่ามีวิธีที่ดีกว่าในการถ่ายทอดความคิด ทำไมไม่มีภาษาให้มากกว่านี้ มีปัญหาเรื่องประสิทธิภาพหรือไวยากรณ์หรือไม่

3
ฉันต้องประนีประนอม: DRY หรือ Command-Query-Separation
ฉันเพิ่ง refactoring วิธีที่ทั้งคำสั่งและวิธีการสืบค้น หลังจากแยกมันเป็นวิธีการหนึ่งคำสั่งและวิธีการค้นหาฉันพบว่าขณะนี้มีหลายสถานที่ในรหัสที่ฉันเรียกคำสั่งแล้วรับค่าจากแบบสอบถามซึ่งดูเหมือนว่าเป็นการละเมิดหลักการ DRY แต่ถ้าฉันจะตัดโค้ดทั่วไปลงในเมธอดเมธอดนั้นจะเป็นทั้งคำสั่งและคิวรี เป็นที่ยอมรับหรือไม่?

3
วิธีการที่มากไปเหมาะสมเมื่อใด
สมมติว่าฉันกำลังทำงานกับระบบที่มีอยู่และมีขนาดใหญ่พอสมควร ฉันมีวัตถุmyObjectของคลาสMyClass(เพื่อประโยชน์ของตัวอย่างสมมติว่าฉันทำงานใน Java) myObjectเป็นองค์ประกอบที่ประกอบด้วย a Collection, say, a Listและวัตถุอื่น ๆ ที่ (ฉันคิดว่า) ไม่เกี่ยวข้อง มันมีวิธีการมอบหมายซึ่งเพียงแค่ให้บริการที่จะเรียกร้องให้วิธีการของListมันประกอบด้วยเพื่อให้แน่ใจว่าListมันจะไม่ได้สัมผัส (ขออภัยถ้าฉันมีคำศัพท์ของฉันผิด) Let 's พูดที่ว่านี้Listเป็นแต่ด้วยเหตุผลบางอย่างที่วิธีการเข้าถึงหลักเป็นวิธีหน้ากากสำหรับการเรียนList<String> SomeOtherClassถ้าผมอยากจะใส่คู่ค่าใหม่เข้าไปในของฉันListแล้วฉันมีวัตถุของที่เรียกว่าSomeOtherClass someObjectฉันต้องการโทรmyObject.insert(someObject)และภายในinsertวิธีการจะมีความมหัศจรรย์บางอย่างที่จะดึงข้อมูลที่จะใส่ลงไปในStringList<String> สมมติว่าตอนนี้ฉันมีStringค่าและไม่มีSomeOtherClassวัตถุที่จะแทรก สมมติว่าฉันไม่สามารถปรับเปลี่ยนinsertวิธีการเพราะมันจะทำลายทุกอย่างในระบบนี้ จากนั้นฉันควรใช้insertวิธีมากเกินไปหรือไม่ หรือฉันควรสร้างวัตถุใหม่ของSomeOtherClassเวลาที่ฉันต้องการที่จะเรียกทุกคนinsert? ฉันเดาว่าถ้าฉันทำมากไปมันจะมีลักษณะเช่นนี้ ... public void insert(String s) { ... } public void insert(SomeOtherObject obj) { this.insert(obj.magicStringMethod()); } (ตัวอย่างนี้เป็นจิ๊กซอว์ที่ออกแบบมาตามสถานการณ์ที่คล้ายกัน (ซับซ้อนกว่าเล็กน้อย) เกี่ยวกับการบรรทุกเกินพิกัดที่ฉันพบเมื่อวานนี้ฉันจะขยายมันหากมีสิ่งใดที่ไม่ชัดเจน) นี่เป็นสถานที่ที่เหมาะสมในการโอเวอร์โหลดเมธอดหรือไม่? ถ้าไม่ฉันควรโอเวอร์โหลดเมธอดเมื่อใด

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