LINUX.ORG.RU

Стиль именования аргументов функции


0

2

Пытаюсь выработать некий сабж. Пример: Есть набор строк (пусть строки представляют собой записи из лога, допустим веб-сервера) Этот набор я хочу обработать в функции. Предварительно я делаю массив с ключами, например:

Data=[]
Data[0]={'time':'','status':'','url':''}
Добавляю данные в этот массив (в моем случае словарь, т.к. python). далее пишу функцию которая обрабатывает этот массив, и тут начинается ступор. Например в функцию надо передать url и время из массива , как назвать аргументы функции? Просто def func(x,y) неинформативно, def func(url,time) снижает читаемость, на мой взгляд. Как их обозвать? Написанную стену текста оформить в виде запроса к гуглу - не осилил.

> def func(url,time) снижает читаемость, на мой взгляд

о_О У вас очень странный взгляд.

geekless ★★ ()
Ответ на: комментарий от geekless

ну как бе эти имена я уже использовал в качестве ключей словаря, я понимаю что у функции своя область видимости, и это только ключи, а не имена переменных, но я размышляю о том, что будет когда я начну читать этот код через месяц или его начнет читать кто-то другой.

K-Vrat ()
Ответ на: комментарий от K-Vrat

что будет когда я начну читать этот код через месяц или его начнет читать кто-то другой.

Что лучше, везде называть вещи своими одинаковыми именами или придумать для каждой 10500 названий алиасов?

mashina ★★★★★ ()
Ответ на: комментарий от K-Vrat

> что будет когда я начну читать этот код через месяц или его начнет читать кто-то другой.

нормально все будет.

Rastafarra ★★★ ()
Ответ на: комментарий от Rastafarra

а такой вариант, к примеру с точки зрения стиля приемлем?

def func(x,y):
    тело функции
x=2
y=3

func(x,y)

K-Vrat ()
Ответ на: комментарий от K-Vrat

1)def func(x,y)
2)def func(url,time)
В каком из вариантов другому программисту будет сразу понятно, какие параметры и в какой последовательности ждет функция?

Если не любишь одинаковые названия, сделай так: def func(in_url,in_time)

aydar ★★★★★ ()
Ответ на: комментарий от aydar

> В каком из вариантов другому программисту будет сразу понятно, какие параметры и в какой последовательности ждет функция?

в обоих. первый вариант принимает координаты x и y, второй url и время :)

// КО

waker ★★★★★ ()
Ответ на: комментарий от K-Vrat

вполне, если речь про координаты. или я не понял вопроса.

Rastafarra ★★★ ()
Ответ на: комментарий от K-Vrat

по своему опыту чтения - делай url и time, все читается нормально - область видимости не зря придумали

lazyklimm ★★★★★ ()
Ответ на: комментарий от waker

Насколько я понял, речь шла об одной и той же функции обработки записей логов сервера. Для функции обработки записей сервера def func(x,y) - плохое название, но оно идеально подходит для функции обработки координат на плоскости

aydar ★★★★★ ()
Ответ на: комментарий от Rastafarra

Главное в этом примере, что переменные из области видимости модуля (x,y)имеют такие же имена как переменные в области видимости функции(тоже х,y)

K-Vrat ()
Ответ на: комментарий от K-Vrat

не вижу в этом проблемы.

или ты в каждом for придумываешь имя для i?

Rastafarra ★★★ ()
Ответ на: комментарий от Rastafarra

Новое не придумываю, но присвоении начального значения заново - думаю

K-Vrat ()

Как их обозвать?

Конечно, url и time.

def func(url,time) снижает читаемость

В сравнении с def func(x,y) повышает.

F ()
def func(**data):
    print url, time

Не? А вообще, пиши docstring и хоть ж...й называй.

anonymous ()

однозначно называть так же как и ключи массива + сток для лишних ключей

def f(url,time,**others) : ...

потом будешь вызывать f(**D) ни о чем не задумываясь. Это наверное наиболее изящное решение.

AIv ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.