คำถามติดแท็ก programming-logic

16
วิธีหลีกเลี่ยงข้อผิดพลาดเชิงตรรกะในรหัสเมื่อ TDD ไม่ได้ช่วย?
เมื่อไม่นานมานี้ฉันกำลังเขียนโค้ดขนาดเล็กซึ่งจะบ่งบอกถึงวิธีการที่เป็นมิตรกับมนุษย์ว่าเหตุการณ์มีอายุเท่าไร ตัวอย่างเช่นอาจบ่งบอกว่าเหตุการณ์เกิดขึ้น“ สามสัปดาห์ที่ผ่านมา” หรือ“ เดือนที่แล้ว” หรือ“ เมื่อวานนี้” ความต้องการค่อนข้างชัดเจนและนี่เป็นกรณีที่สมบูรณ์แบบสำหรับการพัฒนาแบบทดสอบที่ขับเคลื่อน ฉันเขียนการทดสอบทีละตัวการใช้รหัสเพื่อผ่านการทดสอบแต่ละครั้งและทุกอย่างดูเหมือนจะทำงานได้อย่างสมบูรณ์ จนกว่าจะพบข้อบกพร่องในการผลิต นี่คือโค้ดที่เกี่ยวข้อง: now = datetime.datetime.utcnow() today = now.date() if event_date.date() == today: return "Today" yesterday = today - datetime.timedelta(1) if event_date.date() == yesterday: return "Yesterday" delta = (now - event_date).days if delta < 7: return _number_to_text(delta) + " days ago" if …

14
วิธีกำหนด“ หรือ” ตามหลักเหตุผล
เมื่อเร็ว ๆ นี้ฉันเจอปัญหาที่ทำให้ฉันต้องกำหนดตัวดำเนินการเชิงตรรกะ "หรือ" โดยทางโปรแกรม แต่ไม่ได้ใช้ตัวดำเนินการเอง สิ่งที่ฉันคิดไว้คือ: OR(arg1, arg2) if arg1 = True and arg2 = True return True else if arg1 = True and arg2 = False return True else if arg1 = False and arg2 = True return True else: return False ตรรกะนี้ถูกต้องหรือฉันพลาดอะไรไป?

15
อาร์กิวเมนต์สำหรับหรือต่อต้านการใช้ลอง / จับเป็นตัวดำเนินการเชิงตรรกะ [ปิด]
ฉันเพิ่งค้นพบโค้ดที่น่ารักในแอพ บริษัท ของเราที่ใช้บล็อก Try-Catch เป็นตัวดำเนินการเชิงตรรกะ หมายความว่า "ทำรหัสบางอย่างถ้านั่นทำให้เกิดข้อผิดพลาดนี้ให้ทำรหัสนี้ แต่ถ้านั่นทำให้เกิดข้อผิดพลาดนี้ให้ทำสิ่งที่ 3 แทน" มันใช้ "สุดท้าย" เป็นคำสั่ง "อื่น" ที่ปรากฏ ฉันรู้ว่านี่เป็นความผิดโดยเนื้อแท้ แต่ก่อนที่ฉันจะเลือกการต่อสู้ฉันหวังว่าจะมีข้อโต้แย้งที่คิดออกมาดี และเฮ้ถ้าคุณมีข้อโต้แย้งสำหรับการใช้ลองจับในลักษณะนี้โปรดบอก สำหรับผู้ที่สงสัยภาษาคือ C # และรหัสที่เป็นปัญหานั้นมีประมาณ 30+ บรรทัดและกำลังมองหาข้อยกเว้นเฉพาะมันไม่ได้จัดการข้อยกเว้นทั้งหมด

7
วิธีเปลี่ยนตารางความจริงให้เป็นขนาดเล็กที่สุดหาก / บล็อก
ฉันจะใช้ตารางความจริงและเปลี่ยนเป็นกระชับได้อย่างไรถ้าบล็อก ตัวอย่างเช่นสมมติว่าฉันมีตารางความจริงนี้ที่ A และ B เป็นเงื่อนไขและ x, y และ z เป็นการกระทำที่เป็นไปได้: A B | x y z ------------- 0 0 | 0 0 1 0 1 | 0 0 1 1 0 | 0 1 0 1 1 | 1 0 0 สิ่งนี้สามารถแปลงเป็นด้านล่างถ้าบล็อก: if(A) { if(B) { do(x) } else …

5
เมื่อใดที่เหมาะสมที่จะใช้ตัวดำเนินการระดับบิตในนิพจน์เงื่อนไข
ก่อนอื่นมีภูมิหลังบางอย่าง: ฉันเป็นครูฝึกอบรมด้านไอทีและฉันพยายามแนะนำผู้ประกอบการบูลีนของ java กับชั้นเรียนเกรด 10 ของฉัน ครูที่ปรึกษาของฉันตรวจสอบแผ่นงานที่ฉันเตรียมและแสดงความคิดเห็นว่าฉันสามารถให้พวกเขาใช้เพียง & & หรือเดียว เพื่อแสดงโอเปอเรเตอร์เพราะพวกเขา "ทำสิ่งเดียวกัน" ฉันตระหนักถึงความแตกต่างระหว่าง & และ && & เป็นตัวดำเนินการระดับบิตสำหรับใช้ระหว่างจำนวนเต็มเพื่อดำเนินการ "bit-twiddling" && เป็นตัวดำเนินการตามเงื่อนไขที่มีไว้สำหรับใช้ระหว่างค่าบูลีน เพื่อพิสูจน์จุดที่ตัวดำเนินการเหล่านี้ไม่ได้ "ทำสิ่งเดียวกัน" เสมอไปฉันหาตัวอย่างที่ใช้ค่าบิตระหว่างค่าบูลีนจะทำให้เกิดข้อผิดพลาด ฉันพบตัวอย่างนี้ boolean bitwise; boolean conditional; int i=10, j=12; bitwise = (i<j) | ((i=3) > 5); // value of i after oper: 3 System.out.println(bitwise+ " "+ i); …

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

7
ความรู้การเขียนโปรแกรมเทียบกับตรรกะการเขียนโปรแกรม
มีความแตกต่างระหว่างสองหัวข้อหรือไม่? ฉันได้เห็น บริษัท ขอความรู้การเขียนโปรแกรมที่ดีบางตรรกะการเขียนโปรแกรมที่ดี ฉันเคยเห็นสิ่งนี้ในโปรไฟล์งานสำหรับนักพัฒนาเช่นสำหรับ "ตรรกะการเขียนโปรแกรมที่ดี", "ความรู้การเขียนโปรแกรมที่แข็งแกร่ง" ฉันเชื่อว่าความรู้ด้านการเขียนโปรแกรมเกี่ยวข้องกับความรู้เกี่ยวกับภาษาในการพิจารณาและตรรกะการเขียนโปรแกรมเป็นตรรกะการแก้ปัญหาโดยใช้การเขียนโปรแกรม (โดยทั่วไป) โปรดแก้ไขฉันหากฉันผิด นอกจากนี้สิ่งที่สำคัญกว่า แก้ไข: การเลือกส่วนประกอบสำหรับแอปพลิเคชันการออกแบบอินเตอร์เฟสที่ตรวจสอบอินพุตของผู้ใช้ตกอยู่ภายใต้ความรู้ด้านการเขียนโปรแกรมหรือตรรกะการเขียนโปรแกรมหรือไม่ ตรรกะการเขียนโปรแกรมหมายถึงการแก้ปัญหาเพียงอย่างเดียวหรือมีอะไรอีกบ้างที่ควรประกอบด้วย?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.