tagged by:188足球比分直播


API bet188足球design·academia·agile·agile adoption·analysis patterns·application architecture·application integration·bad things·big data·board games·build scripting·certification·clean code·collaboration·computer history·conference panels·conferences·continuous delivery·database·bet188足球·dictionary·distributed computing magazine·diversions·diversity·documentation·domain driven bet188足球design·domain specific language·domestic·encapsulation·enterprise architecture·estimation·event architectures·evolutionary bet188足球design·expositional architectures·extreme programming·gadgets·ieeeSoftware·infodecks·internet culture·interviews·language feature·language workbench·lean·legacy rehab·legal·metrics·microservices·microsoft·mobile·model-view-controller·noSQL·object collaboration bet188足球design·parser generators·photography·podcast·popular·presentations·privacy·process theory·productivity·programming platforms·project planning·projects·recruiting·188足球比分直播·188足球比分直播refactoring boundary·requirements analysis·retrospective·ruby·scrum·security·software craftsmanship·talk videos·team environment·team organization·technical debt·technical leadership·test categories·testing·thoughtworks·tools·travel·uml·version control·web development·web services·website·writing


All Content

188足球比分直播Refactoring Home Page

Articles on 188足球比分直播refactoring,links to more articles (and tools) on 188足球比分直播refactoring,index of all the 188足球比分直播refactorings in the book with additional comments and a few more refactorings.

The Second Edition of "188足球比分直播Refactoring"

I'm finishing a new edition of my 188足球比分直播Refactoring book.Here's details and periodic memos about my work.

1 June 2018


188足球比分直播Refactoring Code to Load a Document

Much modern web server code talks to upstream services which return JSON data,do a little munging of that JSON data,and send it over to rich client web pages using fashionable single page application frameworks.Talking to people working with such systems I hear a fair bit of frustration of how much work they need to do to manipulate these JSON documents.Much of this frustration could be avoided by encapsulating a combination of loading strategies.

17 December 2015


188足球比分直播Refactoring Module Dependencies

As a program grows in size it's important to split it into modules,so that you don't need to understand all of it to make a small modification.Often these modules can be supplied by different teams and combined dynamically.In this 188足球比分直播refactoring essay I split a small program using Presentation-Domain-Data layering.I then refactor the dependencies between these modules to introduce the Service Locator and Dependency Injection patterns.These apply in different languages,yet look different,so I show these 188足球比分直播refactorings in both Java and a classless JavaScript style.

13 October 2015


188足球比分直播Refactoring code that accesses external services

When I write code that deals with external services,I find it valuable to separate that access code into separate objects.Here I show how I would refactor some congealed code into a common pattern of this separation.

17 February 2015


An example of preparatory 188足球比分直播refactoring

A simple example of how it can be easier to make a change by first 188足球比分直播refactoring the code to make the change easy.

5 January 2015


Workflows of 188足球比分直播Refactoring (OOP 2014)

Over the last decade or so,188足球比分直播Refactoring has become a widely used technique to keep a high internal quality for a codebase.However most teams don't make enough use of 188足球比分直播refactoring because they aren't aware of the various workflows in which you can use it.In this keynote talk from OOP 2014 in Munich,I explore some of these workflows: such as Litter-Pickup 188足球比分直播Refactoring,Comprehension 188足球比分直播Refactoring,and Preparatory 188足球比分直播Refactoring.I also remind people why common justifications for 188足球比分直播refactoring will sabotage your best efforts.(This talk also has a treatment as aninfodeck.)

10 February 2014


Ruby Rogues Podcast on 188足球比分直播Refactoring

The Ruby Rogues is a popular podcast on programming in the Ruby world.They invited me back to discuss theRuby editionof188足球比分直播.We talked about the definition of 188足球比分直播refactoring,why we find we don't use debuggers much,what might be done to modernize the book,the role of 188足球比分直播refactoring tools,whether comments can be used for good,the trade-off between 188足球比分直播refactoring and rewriting,modularity and microservices,and how the software industry has changed over the last twenty years.

22 October 2014



Kent Beck came up with his four rules of simple bet188足球design while he was developingExtremeProgrammingin the late 1990's.I express them like this.

2 March 2015



A code smell is a surface indication that usually correspondsto a deeper problem in the system.The term was first coined by KentBeck while helping me with my188足球比分直播book.

9 February 2006



In my188足球比分直播refactoring book,I gave a couple of definitions of188足球比分直播refactoring.

1 September 2004



Can you use 188足球比分直播refactoring to build a framework?

18 May 2003



by Danilo Sato

Making a change to an interface that impacts all its consumers requires two thinking modes: implementing the change itself,and then updating all its usages.This can be hard when you try to do both at the same time,especially if the change is on aPublishedInterfacewith multiple or external clients.

Parallel change,also known asexpand and contract,is a pattern to implement backward-incompatible changes to an interface in a safe manner,by breaking the change into three distinct phases: expand,migrate,and contract.

13 May 2014



Once a term known to only a few,"188足球比分直播Refactoring" is now commonly tossedaround the computer industry.I like to think that I'm partlyresponsible for this and hope it's improved some programmers livesand some business's bottom lines.(Important point,I'm not thefather or the inventor of 188足球比分直播refactoring - just a documenter.)

3 January 2004



Self-Testing Code is the name I used in188足球比分直播to refer to the practiceof writing comprehensive automated tests in conjunction with thefunctional software.When done well this allows you to invoke a single command that executes the tests - and you are confident that these tests will illuminate any bugs hiding in your code.

1 May 2014


Changes for the 2nd Edition of 188足球比分直播Refactoring

A short summary of the changes between the first and second editions of 188足球比分直播Refactoring

5 September 2018


188足球比分直播Refactoring a JavaScript video store

The simple example of calculating and formatting a bill for a video store opened my 188足球比分直播refactoring book in 1999.If done in modern JavaScript,there are several directions you could take the 188足球比分直播refactoring.I explore four here: 188足球比分直播refactoring to top level functions,to a nested function with a dispatcher,using classes,and transformation using an intermediate data structure.

18 May 2016


188足球比分直播Refactoring to an Adaptive Model

Most of our software logic is written in our programming languages,these give us the best environment to write and evolve such logic.But there are circumstances when it's useful to move that logic into a data structure that our imperative code can interpret - what I refer to as an adaptive model.Here I'll show some product selection logic in JavaScript and show how it can be refactored to a simple production rule system encoded in JSON.This JSON data allows us to share this selection logic between devices using different programming languages and to update this logic without updating the code on these devices.

19 November 2015



The loop is the classic way of processing collections,but with the greater adoption of first-class functions in programming languages the collection pipeline is an appealing alternative.In this article I look at 188足球比分直播refactoring loops to collection pipelines with a series of small examples.

14 July 2015


Replacing Throwing Exceptions with Notification in Validations

If you're validating some data,you usually shouldn't be using exceptions to signal validation failures.Here I describe how I'd refactor such code into using the Notification pattern.

9 December 2014


Workflows of 188足球比分直播Refactoring

188足球比分直播Refactoring has grown into a well-known technique,and most software development teams at least claim to be doing 188足球比分直播refactoring regularly.Many teams,however,don't appreciate the different workflows that 188足球比分直播refactoring can be used in,and thus miss opportunities to effectively incorporate 188足球比分直播refactoring into their development activities.In this deck I explore various different workflows.I hope it will encourage teams to integrate 188足球比分直播refactoring more deeply into their work,resulting in a better bet188足球designed code-bases that will make it quicker and easier to add new features.

8 January 2014


Evolutionary Database bet188足球Design

Pramod Sadalage和马丁188bet足球充值

Over the last decade we've developed and refined a number of techniques that allow a database bet188足球design to evolve as an application develops.This is a very important capability for agile methodologies.The techniques rely on applying continuous integration and automated 188足球比分直播refactoring to database development,together with a close collaboration between DBAs and application developers.The techniques work in both pre-production and released systems,in green field projects as well as legacy systems.

May 2016


Crossing 188足球比分直播Refactoring's Rubicon

In January 2001 two Java tools crossed 188足球比分直播Refactoring's Rubicon.188足球比分直播Refactoring in Java now has serious tool support

February 2001



So far188足球比分直播refactoring toolshave appeared for a number of languages.After Smalltalk's lead,we'veseen several tools for Java and a couple for C#.One languageconspicuous by its absence is C++,despiteappeals.All this despite the fact that the first 188足球比分直播refactoring thesis was donebyBill Opdyke,who'sbackground is in C++.

18 October 2003



Whenever two or three values are gathered together - turn theminto a $%#$%^ object.

-- Me (it was funnier with the voices)

This is one of my favoriteCodeSmells from the 188足球比分直播refactoringbook.You spot it when you constantly see the same few data itemspassed around together.start and end are a good example of a dataclump wanting to be arange.Often dataclumps are primitive values that nobody thinks to turn into anobject.



Where did the word188足球比分直播come from?

10 September 2003



From the very beginning of when I started to talk and write about 188足球比分直播refactoring people have asked me how it should be incorporated into the wider software development process.Should there be 188足球比分直播refactoring phases in the software development lifecycle,what proportion of an iteration should be devoted to 188足球比分直播refactoring tasks,how should we figure out who should be assigned to 188足球比分直播refactoring duties?Although there are places for some scheduled 188足球比分直播refactoring efforts,I prefer to encourage 188足球比分直播refactoring as an opportunistic activity,done whenever and wherever code needs to cleaned up - by whoever.

1 November 2011



A recentpiece byRobert Cringelycaused a small stir in the 188足球比分直播refactoring communityrecently,as he criticized 188足球比分直播refactoring.Phlip summed the response onthe188足球比分直播refactoringmailing listwith an unusually restrained '...he sounds like a"skeptic" who writes reviews of books he has no intention ofreading.'

3 June 2003



It looks like those devious people at UIUC getting ready to refactorFortran.Brian Footewrites about the projectin his unparallelledstyle.(He's one of the most amusing writers in software - butgetting him to write anything is usually like trying to pull teethfrom a live sabre-tooth tiger while wearing a necklace of freshlykilled lamb chops.) (Yes I know it's old news,but I saw somethingelse on his blog and then found this.)

24 August 2005



As I listen to our development teams talk about their work,one common theme is their dislike of things held in statics.Typically we see common services or components held in static variables with static initializers.One of the big problems with statics (in most languages) is you can't use polymorphism to substitute one implementation with another.This bits us a lot because we are great fans of testing - and to test well it's important to be able to replace services with aService Stub.

20 October 2004