# सूक्ष्म Logic Bugs — AI Coding Assistants: अच्छी तरह उपयोग करें और सख़्ती से review करें

Source: https://www.geekswithgeeks.com/hi/ai-coding-assistants/rev-logic-bugs

> बनाए कोड में off-by-one errors, छूटे edge cases और साझा state की ग़लतियाँ पकड़ें।

## आकार सही, ब्योरा ग़लत

बनाए कोड का ढाँचा अक्सर सही होता है पर कोई ब्योरा ग़लत: **off-by-one** error, **खाली list** की जाँच का छूटना, **सीमा** जो समावेशी होनी चाहिए, **साझा mutable default**। ये सरसरी नज़र में निकल जाते हैं। कोड को सीमा के inputs (0, 1, खाली, अधिकतम) पर चलाएँ और loops व indexes धीरे पढ़ें।

## दो पुरानी चूकें, चलाकर

मैंने यह चलाया। `average([])` ZeroDivisionError उठाता है। `page_bad` page 1 को दूसरा पन्ना मानता है, इसलिए पहले तीन items छोड़ देता है; `page_ok` 1 से शुरू होने वाले pages उपयोग करता है।

```python
def average(nums):
    return sum(nums) / len(nums)        # crashes on []
def average_safe(nums):
    return sum(nums) / len(nums) if nums else 0.0

items = list(range(1, 11))
def page_bad(items, page, size):
    return items[page * size : page * size + size]     # 0-based by accident
def page_ok(items, page, size):
    start = (page - 1) * size
    return items[start : start + size]

print(average_safe([]), average_safe([2, 4]))
print(page_bad(items, 1, 3), page_ok(items, 1, 3))
```

Output:

```
0.0 3.0
[4, 5, 6] [1, 2, 3]
```

## शून्य, एक और कई मामले आज़माएँ

ज़्यादातर bugs सीमाओं पर छिपते हैं। किसी भी function पर भरोसा करने से पहले उसे बिना कुछ, ठीक एक item और कई items के साथ परखें।

**Quiz:** `average(nums)` में छूटी जाँच वाले bug को कौन-सा input सबसे ज़्यादा उजागर करेगा?

- [ ] 1000 संख्याओं की list
- [ ] सिर्फ़ strings की list
- [x] खाली list
- [ ] बहुत लंबा variable नाम

*Answer:* खाली list. खाली input पुराना सीमा-मामला है जो शून्य से भाग उठाता है।
