4019 votes

Cas d'utilisation appropriés pour Android UserManager.isUserAGoat ()?

Je regardais les nouvelles Api introduit dans Android 4.2. Tout en regardant à l' UserManager classe je suis tombé sur la méthode suivante:

public boolean isUserAGoat ()

Utilisé pour déterminer si l'utilisateur en faisant cet appel est soumis à disparitions.

Retourne si l'utilisateur en faisant cet appel est une chèvre.

Comment et quand faut-il être utilisé?

1994voto

meh Points 6115

À partir de leur source, il semble que la méthode renvoie false tout le temps:

/**
 * Used to determine whether the user making this call is subject to
 * teleportations.
 * @return whether the user making this call is a goat 
 */
public boolean isUserAGoat() {
    return false;
}

Il ressemble à la méthode n'a pas de réelle utilité pour nous, en tant que développeurs. Quelqu'un l'a déjà indiqué qu'il pourrait être un œuf de Pâques.

1041voto

djechlin Points 18051

Je ne sais pas si c'était "la" officielle de cas d'utilisation, mais le texte suivant génère un avertissement en Java (qui peut encore produire des erreurs de compilation si mélangé avec de l' return des déclarations, conduisant à du code non accessible):

if(1 == 2) {
    System.out.println("Unreachable code");
}

Cependant, ce qui est légal:

if(isUserAGoat()) {
    System.out.println("Unreachable but determined at runtime, not at compile time");
}

Donc, souvent, je me retrouve à écrire un idiot utilité de la méthode de la façon la plus rapide de mannequin d'un bloc de code, puis en remplissant le débogage trouver tous les appels, de sorte à condition que la mise en œuvre ne change pas ce qui peut être utilisé pour cela.

805voto

pdknsk Points 4442

Cela semble être une blague de chez Google. Il est également en vedette dans le Google Chrome le gestionnaire des tâches. Il n'a pas de but autre que certains ingénieurs de trouver cela amusant. Ce qui est un but en lui-même, si vous voulez.

  1. Dans Chrome, ouvrez le Gestionnaire de Tâches avec Shift+Esc.
  2. Faites un clic droit pour ajouter l' Goats Teleported colonne.
  3. L'émerveillement.

Il y a même un énorme Chrome rapport de bogue sur de trop nombreux téléporté chèvres.

chrome

La suite de Chrome source de l'extrait de code est volé à la HN de commentaires.

int TaskManagerModel::GetGoatsTeleported(int index) const {
  int seed = goat_salt_ * (index + 1);
  return (seed >> 16) & 255;
}

311voto

higuaro Points 7796

En complément de l' @djechlin réponse (la bonne réponse!), cet appel de fonction peut être également utilisé en tant que mannequin code de tenir un point d'arrêt dans un IDE lorsque vous souhaitez arrêter dans certains itération ou d'un appel récursif, par exemple:

enter image description here

isUserAGoat() pourrait être utilisé à la place d'un mannequin de la déclaration de la variable qui sera affiché dans l'IDE comme un avertissement et, dans Eclipse cas particulier, entravera la marque de point d'arrêt, ce qui rend difficile pour l'activer/la désactiver. Si la méthode est utilisée en tant que convention, toutes les invocations, peut être plus tard filtrée par un script (pendant la phase de validation peut-être?).

enter image description here

Google mecs sont lourds Eclipse utilisateurs (qu'ils fournissent plusieurs de leurs projets comme des plugins Eclipse: Android SDK, GAE, etc), de sorte que le @djechlin réponse et cette réponse complémentaire beaucoup de sens (au moins pour moi).

164voto

Lance Nanek Points 3393

Il y a un drôle de méthode nommée/constante/whatever dans chaque version d'Android.

La seule utilisation pratique que j'ai jamais vu, c'était dans le Dernier Appel à Google I/O Concours où ils ont demandé ce que c'était pour une version particulière, pour voir si les concurrents lire l'API diff rapport pour chaque version. Le concours a eu des problèmes de programmation trop, mais en général, quelques détails qui pourraient être classés automatiquement en premier pour obtenir le nombre de demandes vers le bas pour des montants raisonnables qu'il serait plus facile à vérifier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X