Estoy escribiendo código de Objective-C que estará a disposición del público. El código consiste principalmente en algoritmos bien conocidos que se beneficiarían de la optimización. Estoy planeando escribir la mayor parte del código en C para reducir la sobrecarga en la creación de objetos y la recolección de basura. ¿Esto se considera una mala práctica?¿Se considera una mala práctica escribir código c en Object-C/Cocoa Framework?
Respuesta
No, no lo es. Esto se hace con bastante frecuencia en realidad.
Generalmente, uno hace esto cuando uno necesita código de tiempo crítico para correr más rápido (todo lo demás es igual, llamar a una función C es más rápido que un método Objective-C).
Sin embargo, también puede ser mejor en otros casos escribir funciones C en su lugar.
Recuerde que Objective-C es un superconjunto de C. Todo lo que C puede hacer, Objective-C puede hacer, y no se debe considerar malo hacer cualquier cosa que C pueda hacer. Puede haber casos en los que se desaliente a hacer algunas cosas, pero de todos modos.
optimización prematura es la raíz de todo mal
Si se trata de una buena práctica o no depende enteramente de la aplicación. En la mayoría de los casos, diría que primero lo escriba en Objective-C y luego use un generador de perfiles para la optimización si es demasiado lento.
Sin embargo, hay casos en los que sabe que deberá realizar una optimización, por ejemplo, si está escribiendo un intérprete de idioma o una emulación de CPU. En esos casos (y en casos donde los perfiles muestran un cuello de botella) es perfectamente correcto escribir C. pura
No, no, muchos de los marcos propios de Apple son en su mayoría C como Core Graphics o Accelerate. C es muy bueno para las funciones que usará mucho y necesitará correr rápido, como las funciones matemáticas.
Hay montones de casos en los que un modelo OO, especialmente con despacho único, simplemente no tiene sentido. Para una función general, puede no haber un claro "receptor" preferido. Sería preferible un lenguaje que admita funciones genéricas de multidireccionamiento, ya que este lenguaje admite tanto lo que la mayoría de la gente piensa como OO y mucho más, como también admite plenamente las funciones del estilo C antiguas.
- 1. ¿Se considera una mala práctica usar atributos HTML no estándar?
- 2. ¿Se considera una mala práctica utilizar el posicionamiento absoluto?
- 3. ¿Es una mala práctica escribir a $ _POST?
- 4. ¿El código C todavía se considera C++?
- 5. ¿Por qué una identificación negativa o cero se considera una mala práctica?
- 6. ¿Por qué 'para (var item in list)' con arrays se considera una mala práctica en JavaScript?
- 7. Bloquear en un objeto mutable: ¿por qué se considera una mala práctica?
- 8. ¿Es una mala práctica escribir manipuladores de eventos en línea
- 9. Mala práctica: ¿exponer un evento en una interfaz?
- 10. ¿Se considera una mala práctica que los objetos ViewModel tengan el Dispatcher?
- 11. ¿Se considera una mala práctica poner un bucle infinito dentro de TThread.Execute?
- 12. ¿Se considera una mala práctica realizar HTTP POST sin cuerpo de entidad?
- 13. Java asignar un nuevo valor a un parámetro, ¿se considera una mala práctica?
- 14. ¿Es una mala práctica usar variables temporales para evitar escribir?
- 15. ¿Es una mala práctica utilizar matrices multidimensionales en C/C++?
- 16. ¿Se consideran iframes 'mala práctica'?
- 17. ¿Existe una mala práctica para ejecutar código en el constructor?
- 18. ¿Es una mala práctica usar las características C en C++?
- 19. es @unlink una mala práctica?
- 20. Refacturando constantemente mi propio código ... una muy mala práctica
- 21. ¿Está intentando atrapar en una mala práctica de la vista?
- 22. ¿Subclases en Objective-C son una mala práctica?
- 23. ¿En general es una mala práctica tener muchos parámetros "initWith"?
- 24. JSHint considera una variable for-in 'mala'. ¿Qué significa esto?
- 25. C++: ¿Mala práctica para usar clases de amigos en lugar de escribir getters/setters?
- 26. ¿Los argumentos NULL son una mala práctica?
- 27. ¿Es una mala práctica usar uno mismo en decoradores?
- 28. ¿Es una mala práctica escribir un método que no haga nada excepto lanzar una excepción?
- 29. ¿se considera una buena práctica tener condicionales en archivos de encabezado públicos?
- 30. ¿Se considera mala forma ejecutar una función dentro de una instrucción condicional?