Yo no lo veo como una mala práctica...
Yo uso el formato, como un modo de señalar que hay múltiples condiciones que debe cumplir el bucle y que no todas se deben procesar a la vez.
A menudo es preciso verificar una condición y decidir en ella si se sale del bucle o no, pero sería un error de semántica incluirla con el while si no es la única condición, pues hace pensar eso... que es la única condición que debe cumplirse... y falsea así su propósito.
...como digo a menudo tras una condición cumplida debe procesarse algo y luego verificarse otra condición (indistintamente de si luego en ese preciso instante la primera condición ya no se cumple). Entonces la condición expresada tras el while ensombrece al resto de condiciones más o menos complejas que haya dentro del bucle.
En tales situaciones suele ser más adecuado un 'while true', y para mi refleja que ese bucle tiene varias condicion es decir que es compleja y no una simple evaluación... informa con ello al desarrollador de que el bucle es solo la 'patraña' sintáctica y el meollo de condiciones está dentro del bucle.
Después de todo un condicional puede ser visto como un bucle de 0 ó 1 ciclo...
Ahora como reza el dicho: "donde hay patrón no manda marinero"... así, si tu profe te regaña (no debería llegar a suspenderte si no hubo amonestación previa por lo mismo), debes hacer lo que te dice... y tú ya deliverarás si el razonamiento es o no justificado, para decidir por tí mismo si lo adoptas o solo lo encumbras mientras estés a su sombra.