Sobes.tech
Middle

პროცედურული სტილის კოდის შეფასების კრიტერიუმები რა შეიძლება იყოს კარგი და რა ცუდი?

sobes.tech AI

პასუხი AI-სგან

კარგი კრიტერიუმები:

  • კითხულობა: რამდენად ადვილია להבין, რა აკეთებს კოდი ზევიდან ქვემოთ წაკითხვისას.
  • მოსახერხებელი ცვლადებისა და ფუნქციების სახელები: აღწერითი სახელების გამოყენება, რომლებიც ასახავს მათი მიზანს და ლოგიკას.
  • დეკომპოზიცია: რთული დავალებების გაყოფა პატარა, მართვად ფუნქციებად. თითოეული ფუნქცია უნდა ასრულებდეს კონკრეტულ დავალებას.
  • გლობალური ცვლადების არარსებობა: გლობალური ცვლადების გამოყენების მინიმუმამდე დაყვანა დამოკიდებულებების და გვერდითი ეფექტების შესამცირებლად.
  • შეცდომების მართვა: ნათელი და ზუსტი შეცდომებისა და გამონაკლისების მართვა.
  • კომენტარები: იქ, სადაც კოდი გაუგებარია ან ლოგიკის ახსნისთვის.
  • სტილის თანმიმდევრულობა: ერთიანი სტილი ფორმატირებაში და სახელწოდებაში მთელი პროექტის განმავლობაში.
  • კოდში გამეორების მინიმუმამდე დაყვანა: ერთნაირი ან ძალიან მსგავსი ბლოკების გამეორების თავიდან აცილება.
# კარგი მაგალითი დეკომპოზიციისა და ნათელი სახელების

def calculate_average(numbers):
    """სიის საშუალო მნიშვნელობის გამოთვლა."""
    if not numbers:
        return 0
    total = sum(numbers)
    return total / len(numbers)

def process_data(data):
    # ვივარაუდოთ, რომ 'data' არის სიების სია
    averages = []
    for row in data:
        avg = calculate_average(row)
        averages.append(avg)
    return averages

ცუდი კრიტერიუმები:

  • არასაზღვრული: კოდი რთულად გასაგებია, რადგან ლოგიკა არ არის ნათელი, სახელები არასწორია ან სტრუქტურა არ არის, ან არ არის.
  • "სპაგეტი კოდი": ბევრი გადასვლა და დამოკიდებულება, რაც გამორიცხავს შესრულების სერიის თვალსაზრისით.
  • "ლიზუნკა"-კოდი: გრძელი, მონოლითური ფუნქციები, რომლებიც ასრულებენ სხვადასხვა, შეუკავშირებელ დავალებებს.
  • "მაგიური" რიცხვების გამოყენება: არაპატენტირებული რიცხვითი კონსტანტები კოდში.
  • შეცდომების მართვის არარსებობა: პროგრამა "ჩამოიშლება" გაუთვალისწინებელი სიტუაციების დროს.
  • კოდის გამეორება: იგივე ან ძალიან მსგავსი ბლოკები მეორდება სხვადასხვა ადგილას.
  • სტილის შეუთანხმებლობა: ფორმატირება და სახელწოდება სხვადასხვაა, რაც გამარტივებს წაკითხვას.
# ცუდი მაგალითი "ლიზუნკა" და მაგიური რიცხვებით

def process(d):
    t = 0
    for r in d:
        s = 0
        c = 0
        for n in r:
            s += n
            c += 1
        if c > 0:
            t += s / c
    return t / len(d) if len(d) > 0 else 0

შედარება:

კარგი ცუდი
კითხვა-წაკითხვა არაზუსტი ("სპაგეტი", "ლიზუნკა")
ნათელი სახელები გაუგებარი სახელები
დეკომპოზიცია მონოლითური ფუნქციები
გლობალური ცვლადების არარსებობა ზედმეტი გლობალური ცვლადების გამოყენება
ნათელი შეცდომების მართვა შეცდომების მართვის არარსებობა
კომენტარები საჭირო ადგილებში კომენტარები არ არის
სტილის თანმიმდევრულობა შეუთანხმებელი სტილი
კოდის გამეორების მინიმუმამდე დაყვანა კოდის გამეორება