Должен ли я запомнить порядок аргументов функции при изучении нового модуля? - PullRequest
6 голосов
/ 18 февраля 2012

Например, сейчас я изучаю wxPython, в частности функцию инициализации класса:

__init__(self, parent, id=-1, label=EmptyString, pos=DefaultPosition,
 size=DefaultSize, style=0, name=StaticTextNameStr) 

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

Ответы [ 3 ]

4 голосов
/ 18 февраля 2012

Запоминание? Для этого есть документация (включая исходный код).

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

2 голосов
/ 18 февраля 2012

Вам нужно посмотреть на фактическую сигнатуру функции, а не только на то, как утверждается в документации.Так как метод объявлен как __init__(self, *args, **kwargs), единственное, что имеет значение для позиции, это parent, так как остальные все равно должны вызываться по ключевому слову.Возможно, вы захотите следовать порядку ключевых слов, приведенных в документации, чтобы уменьшить количество неожиданностей, когда вы или кто-то еще снова посмотрите на код.

0 голосов
/ 23 февраля 2012

Моцарт, возможно, мог запомнить современные библиотеки программного обеспечения.Остальные из нас полагаются на интеллектуальные интегрированные среды разработки с дополнением кода и справочные документы.При этом, да, вы должны прочитать документы, чтобы увидеть, что там, может быть, даже делать заметки.Хорошо написанный API (например, библиотеки Apple) спроектирован так, что имена и прототипы имеют смысл и соответствуют читателю.

например

int main(int argc, char *argv[]);
-(void)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;

И так далее.Хороший интервьюер попросит вас сделать некоторые из них (чтобы он знал, что вы не будете тратить весь день на изучение API), но также даст вам некоторую снисходительность, если вы не можете запомнить каждый параметр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...