В чем выгода этого стиля кодирования? - PullRequest
1 голос
/ 03 июня 2011

Недавно я столкнулся с этим стилем кодирования Objective-C:

- (NSFetchedResultsController *)fetchedResultsController
{
    NSFetchRequest      *fetchRequest;
    NSEntityDescription *entity;
    NSSortDescriptor    *sortDescriptor;
    NSArray             *sortDescriptors;
    NSError             *error;

    if (_fetchedResultsController != nil) {
        return _fetchedResultsController;
    }

    entity = [NSEntityDescription entityForName:@"Deck" inManagedObjectContext:self.managedObjectContext];

    sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
    sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];

    fetchRequest = [[NSFetchRequest alloc] init];

    [fetchRequest setEntity:entity];
    [fetchRequest setFetchBatchSize:20];
    [fetchRequest setSortDescriptors:sortDescriptors];

    _fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
    _fetchedResultsController.delegate = self;

    error = nil;

    if (![self.fetchedResultsController performFetch:&error]) {
        DLog(@"Failed fetching decks: %@, %@", [error localizedDescription], [error userInfo]);
    }

    // etc...

Я имею в виду объявления в начале метода.Что то, что для?Это хорошая практика?Кажется, это добавляет ясности в код, поскольку вы можете сразу увидеть, какие переменные будет использовать метод, верно?

Ответы [ 3 ]

8 голосов
/ 03 июня 2011

С одной стороны, это добавляет ясности, поскольку вы сразу видите, какие переменные будет использовать метод.Это наследие C, где вы должны были объявить все переменные в верхней части блока в скобках, поскольку в середине блока не было разрешено никаких объявлений.объявления иногда находятся далеко от места, где они будут использоваться впервые, поэтому это не помогает понять, для чего будет использоваться переменная.Я думаю, что это просто вопрос вкуса.

3 голосов
/ 03 июня 2011

Я не могу представить себе выгоды от «немедленного просмотра переменных, которые будет использовать метод», в то время как я вижу большие преимущества в объявлении переменных, где они используются, и инициализации их в той же строке, что и объявление.

0 голосов
/ 03 июня 2011

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

...