- 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?
Filed on
02-05-2009, 19:07
under Development, PHP, QA
&
six comments
&
no trackbacks
Trackbacks
Trackback specific URI for this entry
Add a Comment & let me know what you think
Foo supposes:
published on May 2nd 2009, 08:49:40 pmTesting 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.
Reply
Dagfinn Reiersøl replys:
published on May 4th 2009, 08:15:36 amI 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.
Reply
Sara Golemon opines:
published on May 4th 2009, 08:22:18 pm"Love your code"
this :)
Reply
Lars Strojny answers:
published on May 4th 2009, 09:57:41 pmAs far as I know, love is not enough :)
Reply
Andre means:
published on May 5th 2009, 07:12:00 pmThanks 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.
Reply
Daniel Londero means:
published on May 5th 2009, 07:51:41 pmGreat 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…
Reply