¿En qué casos las clases de utilidad no son una mala práctica?

A2A. Creo que una respuesta defendible es que estás trabajando en un lenguaje basado en clases, y no estás tratando de hacer POO en primer lugar. Una clase de utilidad es solo programación procesal dentro de una clase. Creo que es una respuesta defendible, porque los lenguajes como Java o C # no son lenguajes OO, de todos modos. Hay una alternativa a las clases de utilidad en esos idiomas, a la que me refiero en ¿Son buenas las clases de utilidad oo desgn?

Recuerdo haber usado una clase de utilidad en C ++ hace muchos años como una forma de proporcionar una pequeña abstracción para una biblioteca de C que estábamos usando. No entendí cómo usar las capacidades de abstracción de C ++ tan bien en ese momento. Todo lo que realmente entendí fue Patrones de diseño. Mi clase de utilidad fue modelada después del patrón Fachada. No necesitaba instancias para lo que estaba tratando de hacer. Así que hice todos los métodos en él estáticos. La debilidad de una clase de utilidad es que no abstrae mucho, por lo que le faltará flexibilidad en su implementación. Mientras eso no sea una preocupación que tengas, probablemente esté bien.

Las clases de utilidad no son una mala práctica para las funciones sin estado, que solo funcionan en su entrada y salida de retorno, y no modifican el estado. Esto es especialmente cierto para los lenguajes que requieren definiciones de clase incluso si no hay objetos reales, como Java.

La creación de objetos y el estado donde no son necesarios, solo para “hacerlo orientado a objetos”, es perjudicial para el diseño del programa.

¿Quién te dijo que eran una mala práctica?
Las clases de utilidad están bien, como es evidente en las muchas bibliotecas de utilidades comunes, por ejemplo: utilidades de cadena, utilidades de línea de comandos, bibliotecas de agrupación, bibliotecas de almacenamiento en caché, todas las utilidades. Por lo tanto, los servicios públicos son una buena práctica. ¡Los mejores deseos!

Las clases de utilidad nunca son una mala práctica. Hay algunas pequeñas líneas de código que no pertenecen a ninguna parte pero que se usan muchas veces.
Así que seguimos adelante, rompemos el diseño orientado a objetos y hacemos una clase de procedimiento para la utilidad.

Incluso las personas que dicen que la utilidad es mala, nunca lo intenten. Simplemente pregúnteles si usan la herramienta de cadena en sus softwares. La respuesta es sí.
Pero haga las utilidades con cuidado, haga clases de utilidad pobres.
No confíe en la utilidad misma.

More Interesting

Tengo una entrevista para una pasantía de ingeniería de software en Uber en menos de una semana. ¿En qué debería centrarme?

¿Qué tan comunes son las prácticas de programación extrema / ágil entre las nuevas empresas de Silicon Valley?

¿Cuál es la diferencia entre una variable que es: nula, indefinida o no declarada?

¿Cómo determinan los ingenieros si un sistema tiene suficientes redundancias?

¿Por qué todos odian a Flash?

Mi hermana piensa que es genial porque construye todo su software de abajo hacia arriba con C. Me llama novato cuando uso Ruby para construir un juego de tres en raya y dice que nunca tendré tan buenos fundamentos como ella ¿Cómo la regaño?

¿Cuál debería ser el enfoque para aprender lo básico y debe saber cosas (como la estructura de datos - algoritmos) relacionadas con la programación desde cero después de desmayarse de una rama que no es CSE?

¿Qué parte de una empresa de tecnología nunca externalizarías? Si tuviera que externalizar uno, ¿qué parte / equipo elegiría?

¿Un programador experimentado desarrolla el hábito de comentar más líneas de código mientras programa?

¿Preocupado por el primer trabajo haciendo Ruby on Rails?

Si un verdadero artista recibe un proyecto con un objetivo final estrictamente definido (como un proyecto de software), con limitaciones de costo y calendario, ¿prosperará o tendrá dificultades?

¿Qué sistema operativo es el más adecuado para los ingenieros aeronáuticos en términos de compatibilidad y función del software?

¿Cuáles son algunas de las razones por las que un 'Tech Lead' evita cualquier contacto con su programador mejor capacitado?

Cómo familiarizarme con Unix / Linux, especialmente el terminal, si planeo trabajar en la industria del software

¿VB.Net está muriendo? ¿Vale la pena aprenderlo?