En primer lugar Sé que esta pregunta ha dado la vuelta más de una vez aquí:E_NOTICE: ¿Cuán útil es REALMENTE reparar cada una?
Pero cuanto más que puedo solucionar todos E_NOTICEs (como la gente dice que debería) más me he dado cuenta de que:
- soy micro-optimización
- De hecho, estoy haciendo más código y hacer mi código más difícil de MANTENER y más lento
Tomemos un ejemplo:
Digamos que su utilizando el controlador de MongoDB PHP y tiene un objeto MongoDate
en una var clase llamada ts
dentro una clase que representa una sola fila en una colección en su base de datos. Ahora accede a esta var como: $obj->ts->sec
pero PHP arroja un ajuste (E_NOTICE) porque ts
en este caso no está definido como un objeto en sí mismo porque esta fila en particular no tiene un campo ts
. Entonces piensas que esto está bien, este es el comportamiento deseado, si no se establece devuelve nulo y yo mismo me ocuparé de ellos fuera de los propios trabajos robóticos del intérprete (ya que envuelves esto en una función date()
que simplemente devuelve 1970
si la var es null
o a none-object
).
Pero ahora arreglar que E_NOTICE como otro desarrollador realmente quiere que yo tenga CUALQUIER E_NOTICE es terribad y hace que el código sea más lento para no hacerlo de acuerdo con los errores. Así que hago una nueva función en la clase $obj
llama getTs
y me doy 3 líneas, literalmente, no hacer nada, sino comprobar si el ts
var es un objeto MongoDate
y devolverlo si es ...
POR QUÉ? ¿No puede PHP hacer esto perfectamente bien para mí dentro de su intérprete mucho más rápido que tener que hacerlo en el tiempo de ejecución de la aplicación en sí? Quiero decir que cada vez que tengo que agregar un toque inútil a mi código, prácticamente funciones vacías para detectar variables que realmente manejo con la capacidad de PHP de devolver null
o verificar su instanceof
cuando realmente lo necesito (cuando es vital para el operación y comportamiento de dicha función) y no me inicie en el isset()
s He agregado alrededor de 300 líneas de isset()
s, se está yendo de las manos. Tengo, por supuesto, tiene que hacer que esta getTs
funciones porque no se puede hacer:
class obj{
public $ts = new MongoDate();
}
yo bien tienen que almacenar el ts
dentro del __constructor
(que no estoy muy contento con cualquiera, estoy usando un montón de magia tal como es) o usar una función para detectar si está configurado (lo que hago ahora).
quiero decir que entiendo por qué debería fijar:
- Indefinido vars
- propiedades Asignación de VARs no definidas (
null
VARs) - errores constantes etc
pero si usted ha probado su código y usted sabe que es seguro y solo funcionará de la manera que desee, ¿cuál es el punto en la fijación de todos los undefined index
o none-object
er rors? ¿No está agregando un montón de funciones de isset()
sy 2 líneas a su código en realidad micro-optimización?
Me he dado cuenta después de hacer que la mitad de mi sitio cumple con E_NOTICE que en realidad usa más CPU, memoria y tiempo ahora ... ¿de qué sirve lidiar con cada error E_NOTICE y no solo con los que SON errores?
Gracias por sus pensamientos,
Usted no debería tener que. Deberías manejar excepciones en su lugar. Pero ... ¡BIENVENIDO A PHP! –
@ IgnacioVazquez-Abrams De hecho, PHP se supone que es un lenguaje dinámico, pero con la fijación de todos estos 'E_NOTICES' puedo pensar en por lo menos 1000 piensa que no hacen publicidad dinámica en su comercialización, pero son más aún ... – Sammaye
Usted' Veremos que PHP tiene un 90% de marketing, un 9% de esfuerzo y un 1% de locura. –