"Программы должны быть написаны для людей
читать, и только случайно для
Машины для выполнения. "
Abelson & Sussman, SICP, предисловие к первому изданию
Всегда стремитесь к читаемому коду. Главное, что нужно запомнить:
Избегайте повторных попыток в функциях, критичных к производительности, и циклов
В другом месте они не причинят большого вреда. Используйте их с умом, используйте их экономно. Как примечание, если вы хотите поддерживать старые браузеры, они могут не иметь try-catch.
Но, как я вижу, вы явно неправильно используете некоторые функции для проверки ошибок. Вы можете проверить нужные объекты и свойства объектов непосредственно перед их использованием вместо сложной проверки. И:
if (YAHOO.lang.isUndefined(projectPhaseId) || YAHOO.lang.isNull(projectPhaseId))
можно записать как
if (projectPhaseId != null)
например ... Таким образом, приведенный выше пример может быть достаточно читабельным даже без попытки перехвата Вы, кажется, неправильно используете YUI немного.
Я бы поставил , это работает , как и ожидалось:
function getProjectTask(projectTaskId) {
var projectPhaseId = projectTaskPhaseMap[projectTaskId],
projectPhaseIndex = scheduleData.ProjectPhasesMap[projectPhaseId],
projectPhase = scheduleData.ProjectPhases[projectPhaseIndex];
if (projectPhase == null) return null; // projectPhase would break the chain
var projectTaskIndex = projectPhase.ProjectTasksMap[projectTaskId],
projectTask = scheduleData.ProjectTasks[projectTaskIndex];
return projectTask || null; // end of the dependency chain
}
Как круто это что? :)