jueves, 8 de julio de 2010
miércoles, 7 de julio de 2010
Buenos videos de Uncle Bob (Robert Martin, autor de Clean Code)
http://www.objectmentor.com/videos/video_index.html
lunes, 5 de julio de 2010
Exceptions de jetty para retornar http status codes
Usando jetty, puedes arrojar un status code, con mensaje incluido, de la sgte manera:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
throw new HttpException(404, "not found jeje");
}
jueves, 1 de julio de 2010
Wrap your Exception as a RuntimeException when it is not of your method's business
A method is not required to declare in its throws clause any subclasses of RuntimeException that might be thrown during the execution of the method but not caught.
package exceptions;
public class RuntimeExceptionTest {
public class TestException extends Exception {
}
public static void main(String[] args) {
RuntimeExceptionTest test = new RuntimeExceptionTest();
try {
test.throwWrappedTestExceptionAsRuntimeException();
} catch (Exception e) {
System.out.println("exception catched:\n");
e.printStackTrace();
}
}
private void throwTestException() throws TestException {
throw new TestException();
}
public void throwWrappedTestExceptionAsRuntimeException() {
try {
throwTestException();
} catch (TestException e) {
throw new RuntimeException(e);
}
}
}
Notification rather than logging
¿Te ha pasado que el log ensucia?:
Solución:
Ref:
Location location = tracker.getCurrentLocation();
for (Filter filter : filters) {
filter. selectFor(location);
if (logger. isInfoEnabled()) {
logger. info("Filter " + filter.getName() + ", " + filter.getDate()
+ " selected for " + location.getName()
+ ", is current: " + tracker.isCurrent(location));
}
}
Solución:
Otros beneficios:
Location location = tracker.getCurrentLocation();
for (Filter filter : filters) {
filter. selectFor(location);
support.notifyFiltering(tracker, location, filter);
}
- Mientras programas, no te preocupas de escribir un string concatenando objetos, déjalo para el final.
- El traspaso del software al área de soporte de tu empresa se complementará dándoles la clase Support, en ella están todos los monitoreos o alarmas que deben capturar.
- No debes inicializar un Logger de log4j en cada clase que creas (sino sólo en caso de que quieras hacer un log.debug mientras programas)
- Los logs dejan de ser un string que se escribe "a la rápida", pues deben ser pensados realmente como solución a un requerimiento implícito del departamento de operaciones de tu empresa.
- En cada método de support no sólo puedes poner un logger en disco, sino también un registro en BD o cualquier otra cosa, usa la encapsulación.
Ref:
Growing Object-Oriented Software, Guided by Tests
Suscribirse a:
Entradas (Atom)