Is it possible to apply eXtreme Programming for interfaces (protocols, APIs or frameworks)?
If you have to make several programs should depend on an interface (protocol, API or framework), is it possible to make the inter开发者_StackOverflow社区face with XP (eXtreme Programming) style?
I have to disagree with Mark Ransom. The methods and workflows you choose will of course affect the design of an application. But it's up to the developers to set up a policy how to handle interface changes, BC breaks, or how to avoid them. Also it's up to you how to apply the many faces of XP, saying you don't need to "refactor mercilessly" if it doesn't fit.
Agile methods live from their users feedback, and feedback vice versa will make a more precise product possible. Done right, your interfaces will mature in a real world. Then the interfaces completeness and stability is only limited by it's bandwidth and quantity of application. Of course you need a good catalyst that keeps you on track. Which is more likely a problem.
Also the test first approach usually results in a precise, convenient and user (programmer) oriented product. Which is in my opinion a big step towards stability.
One of the bedrock principles of XP is frequent iteration. This can be useful in terms of adding features, but it conflicts with the desire for a stable interface. An interface that is constantly changing is an interface that is constantly broken.
Just ask anybody who has had to deal with the interfaces to some popular web sites.
How certain are you about the need for a framework and about what that framework needs to support?
One of the first things an XP process might do is challenge this assumption, saying YAGNI.
If you after all do need a framework, it should emerge from refactoring, and then contain only the parts that you actually need.
精彩评论