Skip to content

Instantly share code, notes, and snippets.

@FGRibreau
Last active August 29, 2015 14:12
Show Gist options
  • Save FGRibreau/db67572afb4c9709bcd6 to your computer and use it in GitHub Desktop.
Save FGRibreau/db67572afb4c9709bcd6 to your computer and use it in GitHub Desktop.
function getBackgroundColor (user) {  
  var m = user.picture.match(/avatar\/(\w+|$)/);
  if (m && m[1]) {
    return '#' + m[1].substring(0,6);
  }
}

Bonne idée ! Quelques remarques cependant :

  • La fonction peut retourner undefined suivant son invocation, elle devrait sans doute avoir une valeur de fallback. Ce fallback devrait d'ailleurs être spécifié lors de l'appel.

  • Le rôle de getBackgroundColor est sans doute aussi trop important, cette fonction devrait simplement retourner un hash à partir d'une URL, ici elle doit connaitre comment accéder à l'url à partir d'une entitée user, le couplage semble trop fort.

  • Il serait aussi intéressant de vérifier que l'url est bien une string avant de faire quoi que ce soit d'autre (ahh javascript...).

function getBackgroundColor(gravatarUrl, fallbackColor) {
fallbackColor = fallbackColor || '#ffffff';
if (typeof gravatarUrl !== 'string') {
return fallbackColor;
}
var match = gravatarUrl.match(/avatar\/(\w+|$)/);
if (!match || !match[1]) {
return fallbackColor;
}
return '#' + match[1].substring(0, 6);
}
function getBackgroundColor(gravatarUrl, fallbackColor) {
var match;
fallbackColor = fallbackColor || '#ffffff';
return (typeof gravatarUrl !== 'string' || !(match = gravatarUrl.match(/avatar\/(\w+|$)/)) || !match[1]) ?
fallbackColor
: '#' + match[1].substring(0, 6);
}
@julien-leroy
Copy link

Un vrai commentaire de prof ;)
(Ou un commentaire de vrai prof...)

@gildas-lormeau
Copy link

My 2 cents
Bien que supporté dans les interpréteurs JS actuels, String#substr n'est pas standard jusqu'à ES5.1, ll serait meilleur d'utiliser String#slice ou String#substring.

@FGRibreau
Copy link
Author

@julien-leroy :)
@gildas-lormeau effectivement, vieux réflexe :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment