lostm1nd / HackBulgaria

Projects related to the courses at HackBulgaria
1 stars 0 forks source link

Default values vs. if–ове #17

Open RadoRado opened 10 years ago

RadoRado commented 10 years ago

В User-a, където правиш много if-ове:

function loadUser(taskTemplate, $taskContainer) {
    var tasks = JSON.parse(window.localStorage.getItem('SavedTasks')),
        username = window.localStorage.getItem('Username'),
        avatar = window.localStorage.getItem('Avatar'),
        background = window.localStorage.getItem('Background');

    if (tasks) {
      tasks.forEach(function(task) {
        TaskModule.addTasksToList(task, taskTemplate, $taskContainer);
      });
    }

    if (username) {
      updateGreeting(username);
    }

    if (avatar) {
      updateAvatar(avatar);
    }

    if (background) {
      updateBackground(background);
    }
  }

Една идея по-добре е да ползваш || оператора и да дадеш някакви defaults, ако тези неща ги няма:

function loadUser(taskTemplate, $taskContainer) {
    var tasks = JSON.parse(window.localStorage.getItem('SavedTasks')) || [],
        username = window.localStorage.getItem('Username') || "",
        avatar = window.localStorage.getItem('Avatar') || "",
        background = window.localStorage.getItem('Background') || "#FFF";

     tasks.forEach(function(task) {
       TaskModule.addTasksToList(task, taskTemplate, $taskContainer);
     });
     updateGreeting(username);
     updateAvatar(avatar);
     updateBackground(background);
  }

Така става малко по-изчистено.

Разбира се, трябва да видиш кои defaults ще ти свършат работа.

RadoRado commented 10 years ago

Същото важи и за тук - https://github.com/lostm1nd/HackBulgaria/blob/master/FrontEndJS/week5/todo-list/TaskList/script/app.js#L23

lostm1nd commented 10 years ago

Еми според мен може да се направи за задачите и за бекграунда, но за името и аватара няма да стане, поне не се сещам как. Проблемът идва от това, че когато няма име се изписва само Hello под снимката, а когато има става на Hello, - тоест ако му дам празен стринг ще ми сложи тази запетая след Hello. Същото за аватара - аз имам по подразбиране една картинка и дори да взема празен стринг ще си сменя тази която съм си задал в HTML. Не знам дали има смисъл да давам като default на аватара линк към тази снимка по подразбиране. Другият вариант е да се изнесат проверките в методите, които правят update, което може би е по-добре.

lostm1nd commented 10 years ago

Преместих проверките в самите методи, които запазват стойностите. Сложих стойност по подразбиране на задачите да е празен масив. В app.js на ред 33 при проверката за файла не знам как да го направя. Там като цяло не искам да създавам нов FileReader ако всъщност нямам избран аватар. Какво да го правя?

RadoRado commented 10 years ago

С проверката в методите е OK.

Ако искаш да имаш default-тен аватар - добави placeholder за avatar-a - някаква default–на картинка, която зареждаш :+1:

Обикновенно така се прави