Keterbacaan itu penting

Prinsip Rekayasa Perangkat Lunak di Python

Adam Spannbauer

Machine Learning Engineer

Zen of Python

import this
The Zen of Python, oleh Tim Peters (diringkas)

Indah lebih baik daripada jelek.
Eksplisit lebih baik daripada implisit.
Sederhana lebih baik daripada kompleks.
Kompleks lebih baik daripada rumit.
Keterbacaan itu penting.
Jika implementasi sulit dijelaskan, itu ide buruk.
Jika implementasi mudah dijelaskan, itu mungkin ide bagus.
Prinsip Rekayasa Perangkat Lunak di Python

Penamaan deskriptif

Penamaan buruk

def check(x, y=100):
    return x >= y

Penamaan deskriptif

def is_boiling(temp, boiling_point=100):
    return temp >= boiling_point

Berlebihan

def check_if_temperature_is_above_boiling_point(
        temperature_to_check, 
        celsius_water_boiling_point=100):
    return temperature_to_check >= celsius_water_boiling_point
Prinsip Rekayasa Perangkat Lunak di Python

Tetap sederhana

The Zen of Python, oleh Tim Peters (diringkas)

Sederhana lebih baik daripada kompleks.
Kompleks lebih baik daripada rumit.

  Irisan Pizza

Prinsip Rekayasa Perangkat Lunak di Python

Membuat pizza - kompleks

def make_pizza(ingredients):
    # Membuat adonan
    dough = mix(ingredients['yeast'],
                ingredients['flour'],
                ingredients['water'],
                ingredients['salt'],
                ingredients['shortening'])

    kneaded_dough = knead(dough)
    risen_dough = prove(kneaded_dough)

    # Membuat saus
    sauce_base = sautee(ingredients['onion'],
                                ingredients['garlic'],
                                ingredients['olive oil'])

    sauce_mixture = combine(sauce_base,
                            ingredients['tomato_paste'],
                            ingredients['water'],
                            ingredients['spices'])

    sauce = simmer(sauce_mixture)
    ...
Prinsip Rekayasa Perangkat Lunak di Python

Membuat pizza - sederhana

def make_pizza(ingredients):
    dough = make_dough(ingredients)
    sauce = make_sauce(ingredients)
    assembled_pizza = assemble_pizza(dough, sauce, ingredients)

    return bake(assembled_pizza)
Prinsip Rekayasa Perangkat Lunak di Python

Kapan harus refaktor

Penamaan buruk

def check(x, y=100):
    return x >= y

Penamaan deskriptif

def is_boiling(temp, boiling_point=100):
    return temp >= boiling_point

Berlebihan

def check_if_temperature_is_above_boiling_point(
        temperature_to_check, 
        celsius_water_boiling_point=100):
    return temperature_to_check >= celsius_water_boiling_point
Prinsip Rekayasa Perangkat Lunak di Python

Mari Berlatih

Prinsip Rekayasa Perangkat Lunak di Python

Preparing Video For Download...