LINUX.ORG.RU

История изменений

Исправление vbr, (текущая версия) :

Первый код понятный и читабельный. Второй код непонятный ещё на этапе пролога и будет 100% нечитаемый на этапе условий. Честно говоря не вижу в этом никакого смысла.

Единственное, что я бы сделал, это вынес бы выражения phonebookEntry->index, phonebookEntry->telNo, phonebookEntry->name в переменные index, telNo, name перед этими if-ами:

  int8_t index = phonebookEntry->index;
  const char *telNo = phonebookEntry->telNo;
  const char *name = phonebookEntry->name;
  if (index < 0 && telNo != NULL && name == NULL) {
    // только телефон
  } else if (index < 0 && telNo != NULL && name != NULL) {
    // телефон и имя
  } else if (index >= 0 && telNo == NULL && name == NULL) {
    // только индекс
  } else if (index >= 0 && telNo != NULL && name == NULL) {
    // индекс и телефон
  } else if (index >= 0 && telNo != NULL && name != NULL) {
    // индекс, телефон и имя
  } else {
    //недопустимое сочетание
  }

Исходная версия vbr, :

Первый код понятный и читабельный. Второй код непонятный ещё на этапе пролога и будет 100% нечитаемый на этапе условий. Честно говоря не вижу в этом никакого смысла.

Единственное, что я бы сделал, это вынес бы выражения phonebookEntry->index, phonebookEntry->telNo, phonebookEntry->name в переменные index, telNo, name перед этими if-ами.