February 1st, 2018

404

программистская максима

Ты контролируешь код. Если код контролирует тебя, ты проиграл макаронному монстру, удачи в поиске начала очередной макаронины.

О чём речь? Если ты не можешь написать код так, чтобы тебе самому было удобно - значит ты слабее этого кода, который заставил тебя делать неудобно.
404

мне больно

def check_path(path, control_point):
    '''
        check if path changes AS at the time of control_point
        AS path starts from '1'
        Returns:
            True if path validated (AS changed before or at control_point)
            False if path wasn't validated due to 'no AS information'
        raises NoASChange if AS wasn't changed at control_point
    '''
    start_AS = None
    next_AS = None
    for num, AS in enumerate(path, 1):
        if AS:
            if not start_AS:
                start_AS = AS
            else:
                if not next_AS or next_AS == start_AS:
                    next_AS = AS
        if num >= control_point:
            break

    if start_AS and next_AS:
        if start_AS == next_AS:
            raise NoASChange(
                "AS path wasn't changed in %s hops!" % control_point)
        else:
            return True
    return False


Я не могу придумать как написать аккуратнее. Тестами все кейсы прикрыл, пяток багов поймал, но всё равно не нравится.