java Casos de uso adecuados para Android UserManager.isUserAGoat ()?





6 Answers

No sé si este fue "el" caso de uso oficial, pero lo siguiente produce una advertencia en Java (que puede producir errores de compilación si se mezcla con declaraciones de return , lo que lleva a un código inalcanzable):

while (1 == 2) { // Note that "if" is treated differently
    System.out.println("Unreachable code");
}

Sin embargo esto es legal:

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

Así que a menudo me encuentro escribiendo un método de utilidad tonto para la forma más rápida de eliminar un bloque de código, luego, al completar la depuración, encontrar todas las llamadas a él, así que siempre que la implementación no cambie, se puede usar para eso.

JLS señala if (false) no activa "código inalcanzable" por la razón específica de que esto rompería el soporte para los indicadores de depuración, es decir, básicamente este caso de uso (h / t @auselen). ( static final boolean DEBUG = false; por ejemplo).

Reemplazé while por if , produciendo un caso de uso más oscuro. Creo que puede hacer tropezar su IDE, como Eclipse, con este comportamiento, pero esta edición es de 4 años en el futuro, y no tengo un entorno de Eclipse para jugar.

java android usermanager

Estaba mirando las nuevas API introducidas en Android 4.2 . Mientras observaba la clase de UserManager , encontré el siguiente método:

public boolean isUserAGoat()

Se utiliza para determinar si el usuario que realiza esta llamada está sujeto a teletransportaciones.

Devuelve si el usuario que realiza esta llamada es una cabra.

¿Cómo y cuándo debe usarse?




Como complemento de la answer @djechlin (¡buena respuesta, por cierto!), Esta función de llamada también se puede usar como código ficticio para mantener un punto de interrupción en un IDE cuando desee detenerse en una iteración específica o una llamada recursiva en particular, por ejemplo:

isUserAGoat() podría usarse en lugar de una declaración de variable ficticia que se mostrará en el IDE como una advertencia y, en un caso particular de Eclipse, obstruirá la marca del punto de interrupción, lo que dificultará su habilitación / inhabilitación. Si el método se utiliza como una convención, todas las invocaciones podrían filtrarse posteriormente mediante algún script (¿quizás durante la fase de confirmación?).

Los usuarios de Google son usuarios intensos de Eclipse (proporcionan varios de sus proyectos como complementos de Eclipse: Android SDK, GAE, etc.), por lo que la respuesta de @djechlin y esta respuesta complementaria tienen mucho sentido (al menos para mí).




En la disciplina de reconocimiento de voz, los usuarios se dividen en cabras y ovejas .

Por ejemplo, aquí en la página 89 :

Las ovejas son personas para quienes el reconocimiento de voz funciona excepcionalmente bien, y las cabras son personas para las cuales funciona excepcionalmente mal. Solo el reconocedor de voz sabe lo que los separa. La gente no puede predecir qué voz será reconocida fácilmente y quién no. La mejor política es diseñar la interfaz para que pueda manejar todo tipo de voces en todo tipo de entornos

Tal vez, se planea marcar a los usuarios de Android como cabras en el futuro para poder configurar el motor de reconocimiento de voz para las necesidades de las cabras. ;-)




A partir de API 21 (el primer SDK de Android 5.0 / Lollipop) , esto detecta si la aplicación Goat Simulator está instalada:

/**
 * Used to determine whether the user making this call is subject to
 * teleportations.
 *
 * <p>As of {@link android.os.Build.VERSION_CODES#LOLLIPOP}, this method can
 * now automatically identify goats using advanced goat recognition technology.</p>
 *
 * @return Returns true if the user making this call is a goat.
 */
public boolean isUserAGoat() {
    return mContext.getPackageManager()
            .isPackageAvailable("com.coffeestainstudios.goatsimulator");
}

Esto debería dejar claro que la sugerencia de djechlin de usarlo como una advertencia libre if (false) es una estrategia potencialmente desastrosa. Lo que antes devolvía false para cada dispositivo ahora devuelve un valor aparentemente aleatorio: si esto se encontraba lo suficientemente oculto en su código, podría llevar mucho tiempo descubrir de dónde provienen sus nuevos errores.

En pocas palabras: si no controla la implementación de un método y decide utilizarlo para otros fines que no sean los indicados en la documentación de la API, se encontrará con problemas.




En las montañas más remotas del planeta, se encuentra una especie avanzada de cabra que parece que actualmente puede usar teléfonos, ¡igual que nosotros, los humanos!

Imágenes filtradas: youtu.be/YJwZMUn7GdQ

Google debe haber visto esto y decidió brindarles apoyo, en un intento por mantenerse en la vanguardia de la tecnología.




Por favor vea el siguiente código fuente:

/**
 * Used to determine whether the user making this call is subject to
 * teleportations.
 *
 * <p>As of {@link android.os.Build.VERSION_CODES#LOLLIPOP}, this method can
 * now automatically identify goats using advanced goat recognition technology.</p>
 *
 * @return Returns true if the user making this call is a goat.
 */
public boolean isUserAGoat() {
    return mContext.getPackageManager()
            .isPackageAvailable("com.coffeestainstudios.goatsimulator");
}





Related