- Develop object-oriented code
- Avoid static cling
- Avoid global state
- Use dependency injection
- Use a framework if appropriate
- Refactor continuously
- Use a VCS, preferably a decentralized
- Have commit notifications configured
- Utilize continuous deployment
- Deploy with tools like capistrano
- Deploy phar files
- Test your code
- Use continuous integration to run tests, create and deploy artefacts
- Unit test your code with PHPUnit or SimpleTest
- Have database migration in place to ease schema changes, e.g. with dbdeploy
- Use build tools like phing or ant
- Have metrics configured and use them as a QA measure
- Have a code sniffer in place
- Acceptance tests with tools like Selenium
- Use rapid development tools like Zend Tool or cake
- A fresh checkout should be up and running in a few minutes
- Monitor your (production) systems
- Load monitoring with tools like Cacti
- Event reporting and monitoring with tools like Nagios (for the enterprise, there is nothing else)
- Use a bytecode cache
- Love your code
What do you think is the state of the art in 2009?
Comments
Show comments linear or threaded
Foo supposes:
published on 2009|05|02, 20:49hTesting is so yesterday. It’s just about getting it up’n‘running. Once there is need to change, we just redo everything, the old code sucks anyway.
Dagfinn Reiersøl replies:
published on 2009|05|04, 08:15hI think you’ve summed up the state of the art pretty well. Or what should be the state of the art. I think we need better tools than Selenium for acceptance tests, though. I’m working on a PHP port of the Slim engine for FitNesse.
Sara Golemon opines:
published on 2009|05|04, 20:22h"Love your code"
this :)
Lars Strojny returns:
published on 2009|05|04, 21:57hAs far as I know, love is not enough :)
Andre means:
published on 2009|05|05, 19:12hThanks for that article, very useful. A more detailed description of each would be useful too, in some of the less common areas like bytecode cache.
Daniel Londero reckons:
published on 2009|05|05, 19:51hGreat post! I want to say another time: TEST! Write unit and functional tests for all your code, if possible use TDD so you can’t forget to write your tests later…
Add comment