Bestand wählen

Get a Whiff of This

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Erkannte Entitäten
and then there was the end of the and the the dimension I'm the last but 1 speaker which means you've always meat yeah break after this and then there's another keen on if you stay for that it's really bright a pyramid on the looky some so yeah Yvonne was writing in those of you who are new have almost survived the entire rails confidence and so I think we shall assume this up sponsors pay bills they do would like it thank thank even more than that people organizers conference in PCs your job before you leave the find someone in 1 of those red shirts and say thank you right with thank you thank you few Mr. Michael about I really do have about 40 minutes don't and slides from year's and you would like to be that bad of yeah let's just go so I'm seeing met some really happy to be and I have a talk freely this year's talk is about codes smells
this is terminated by this guy so it's really we did not plan their I would fall Katrina but it's a perfect talk to devoted she's mention this guy's name is well last thing she said this is Kent back this guy's Martin Fowler he's a man who wrote this book which is the
book that teaches head injury factor the collaborated together on the 3rd chapter of that book and that's why the th that they want that it's like mean things and then mean code smells 1 and and so but the reason you know that from today's because what these guys did back in the 19 nineties now II I wrote a book a couple years ago before that I wrote code for 35 years onto my desk OK and now I don't do that I teach instead I teach art classes in logical isn't in in my class I have occasion to ask people if they've heard of codes and just like I suspect all of you every 1 of my classes ago salient yeah we'll controls and then I ask them to list 5 and no 1 team right again back injury driver really most of you cannot do I know that OK i and so we we all think we know that this term but it doesn't mean I don't like your code and I can't tell you why that this is not what a code smell is there is some
opinion involved but really it's it's not just that it such as I disagree with how you write your code the the standard is higher than the smells these 22 different smells all have very precise and on the power of imagine if you will of this list is at a given things means Washington complex idea me if we do this all along with the name stand for it means we can talk to each other in an unambiguous way without having this communications and so 1 of the things they stay talk about very often when people talk about code a prefix codes were back the same bad smells as if that were really
the definition code small that it might indicator problem not that does it might and so you don't know you don't have an obligation to filter out all the smell it actually important they not on its was getting it's all it's also with came through
curtains because they have such green means OK but this last feature in me that call I I like this 1 the 1 that needs a code of conduct in improving the been is the specter shock and surgery that's another favorite OK and so and that the probably this list will 1st of all I appeal confess I've had I had a book for a really long time before it Red and really in a timely rates when those books it's a it's like a recipe book and I've heard it described as a cookbook for people it would be like me a cookbook if you did not meet and so I really need this story or can I had a very hard time following along like persisting with much recipes that were just like structure from from from right but it turns out it was really worthwhile when I find it actually constraining the Nazi in training so this this we see things on this list I have StackOverflow at 22 it turns out there's a
guy named whose name I can't pronounce me entire it'll be in the credits he wrote a paper where group them for those 2 way you get them in 5 different categories and through the magic of keynote I can do that so the only reason we make talk so we can use the effects on inside that so here find a list of
some of this set OK this is a list of things that just do not need to be that being 1 of the large class a poly self-explanatory decomposition you have of 2 or more pieces of data that always appear together the passing around over everything together long frivolous is obvious to me my only occur once with its long having problems falling object in there somewhere in the same so the wonderfully named thing called primitive obsession we saw an example that in the target tree disk 8 this is when you have like a be an instance of this class I guess during her number hatchery and you pass around a bunch of objects and they look at it and decide what to do based on something they know that see sailing and 106 solving the next so it's a there'll be something else right it's a say if only the thing you got was so worried he descended messages to prove this session is when they're not the auditor to that you're passing around the center of gravity a chemical Bloaters they make code bigger than it needs to be in a place as reasons the next this 1 these are things
that these are ideas there available in under during priming that you can misuse a switch statement you know the conditionals by in normal people talk that's conditionals refused request is when I that's inheritance problem you have some class that override a method that inherits from class and like throws exceptions says I don't implement that thing I refuse the bequest uh alternative with the interfaces is pretty obvious is temporary fill this interesting a temporary field is on this list right to refuse can be really and sometimes amenities should me a method with that name right white in wizard about the code you have now that feels like a reasoning and so these things are all grouped in a
category and that he called tool abuses II I have a lot of work on bikes and watchful full like synonymy even true mechanic which means I have a virtual tools which sometimes involves a very short which along pipe and a hammer that right I can tell you that I almost always turns out that if you if you abuse your tools right next to this
group the this is stuff that makes
change horrible so said adverse change surgery which we've talked about apparel inheritance hierarchies which is pretty obvious sometimes you have got a couple of hierarchies in each have 2 sides and every adjacent good Avenue in both sides of the hierarchy of the these are the things that keep you from wanting to change code or make code partner change now notice it almost everything i'm talking about if nothing ever changes it's probably OK I can't it's a really embarrassing code can it at it's fine to keep really embarrassing condition be brave of ugly embarrassing code because it is not cost money if it's not changing and so it just because the smells exists here sometimes you should like alone and be proud walk away the what Don people make fun of you might have a bad code well
this next this next category the
legal aspect of generosity day at that it's that k another up on top of the effects fine in the pictures is also fun I classes in on June of is a laser glossary doesn't justifies existence all I'm escape specular generality for minute data class know we're object-oriented programmers classes on a the in behavior duplicated code is pretty obvious but we go back to speculative Giraldi specular generality emasculation into who here has ever written some code for a feature you thought might arise in the future he dreamed up for a minute I off on and out myself with you here who here has ever after many months of working around that code written down thrown away it again we are bad gasses they end up you know I love all I love object-oriented design it's a thing that's really interests me but this this thing of specular generality we say I do some really cool my code for some feature that I think we might need later this is why people say bad things about the world right this is what the bling for primarily things in that category you have to be right so those are the few times that you all right have to really be being wins that way the enormous cost of being wrong code is red needing more times in history what the cost the cost that we that that the reason that we cost money is this time we spent reading code if you add duality you increase the level of abstraction of code very often it means adding levels of indirection terrible at it means that every time someone looks at the College foreign Rashid so here we should really try to restrain ourselves and not speculate about the future when the new requirements come they'll tell us how we wish we are in the code we can do with then dispensable sorry here
ASEAN did that thing with a clicker
dispensable as you've all seen in OK so will on so the
last category years as this group of
feature and the inappropriate and missing message changing main feature in these when I have an object of the JOS down here does not do that I know about and I synonym way more messages than I myself could be that I'm more tightly coupled edges I know right the inappropriate and C would be if John had been to private methods I reached and got them look that would be that I really have I really answer sort implicit encoded kind and honest so I find it is made up of what this is she's is a lot to those violations right you got dots yeah volumes messages something you know about and you get a response back additional message if the types change across as . change that's a message no man is if you have a nondecreasing messages and it's all part of life is to for those messages somebody else maybe you don't need an object these things are called the grouped together in a group called couple because the effect of this is that it binds the objects together such that even if you in the beautiful in tested in the works of art became ever reaching get 1 out in use in in another context they they come as a bundle all
and and so there you go 10 minutes and 34 seconds everything you need to know about table 1 I've done this land and it is now inside factory but not very much to his
her talk on the effect but there's a thing here the people know that the that this guy's discovered in the nineties that I want you to go away understanding and it's this refactoring was just like hotels have names in very specific things refactoring have having refectories of names the very specific and the column with recipes 19 when the recipes the hearing very specific concrete recipes here on
this page 149 1 fellas book it looks like a recipe right it has numbers down the side there's little optional clauses here offers situations it might be but that might be different in your case using the 1st of the recipes you where the things in capital letters that's another whole recipe by itself it's recipes with recipes with recipes it also all the reflectance work in the same way but this is not something not we don't is where is a single factor refactoring has a very specific definition it's to rearrange code without changing its behavior and all the ways in which he could rearrange code or I already written down with instructions by people who really thought a lot of thought a lot about this
this money in cosmos the means and there'll things and factories have names and there'll things and they come with recipes I can give you 1 last bit of news every cults mental maps to the curative refactoring recipe under that from presently here's a cheat sheet is 1 is provided by the guys at industrial logic top that codes another talking on this is a little tiny definition of data from that F 18 1 is a reference page eating when my fellas book the 3 things on the bottom or the refactoring recipes of their curative for that come to know so this slide I just wouldn't think it ceded success extracted from
this PDF this which is a couple pages long in the cross-references all the smells and refactor using my fellas book the refactoring look and also a book by another 19 Joshua curiosity called respect and patterns and so it turns out that this is all you know the problem is solved you do not have to reinvent the wheel and so it
turns out if he's if he's want all you know is a few things and maybe this 1 experience originality of this talk is much teaching is somehow I think generations past since all these books were written in that people who are new to programming last 15 years I'm a woman of a certain age you can tell right if you're new in the last 15 years you may not have this information initiation codon may give the army
is the last 1 another 12 instead about 15 20 minutes to look at the code and I'll show you the practical effect of recognizing codes smells you code doing wrong refactorings my class sale is
a subclass of persistent you can think of that is active record if you're in the back it will not hurt my feelings if you get up and come forward that's the font size of my code and I know I didn't even keener happens OK so so we have that and that's I have my class who has the sales total method takes some frames a news event for like thing or something then control calls it knows the name the sale class in an initially things right is it still understands we're and this is the thing that comes back as response from Cinemaware messages some it also has to at tributes there in the sales class and is the name of date in any cost it knows that dog it can pass and D range as an argument to where the crew work the OK well that's funny and in some schools in deserts later someone makes Bach and bottle or like silvery what weekly totals here takes programs reviewing the starting date to do this I can calculate the right here and then there's another thing here that knows where instance onto the thing comes back in the past takes then later so this is like Agile right people or status of of the back along this what happens when you don't have code ownership and don't have oversight I love and alignment in handles better than standard that what code that looks like this because people solve the proximal problem and no 1 has a big picture but here comes only a portion I'm expenses for intervals that's can happen no get we had this expense don't intransitives this looks a lot like the other stuff and in this method blows up because someone passes it would be bad the that's true for dates component and so someone comes in here the debate the above reportedly coming in fixed can I get this could what's let's to stop them you can try to identify all of the ideas in this 1 slide very simple code is the idea that I can calculate week and that was the idea that the 2 might be might pass the bad I set default there's the notion that stock and indeed go together as a group always my mediators idea that I have my new messages that I consider the way to steal another object I know that name that are that have to be done in the this attitude so at all this stuff it's not up a lot of different ways you it's still not so bad right if nothing ever changes and maybe should walk away but here's what happens in my life this is that when I go out and why and how often I spent from a business is very often there have been successful so that means of 5 to 6 or 7 years old and have enormous codebases at The Hague right that's way Connie at I go I meet imagine right censored empirical basis at home but was still being embarrassed units public your business has been successful but it it's just the way it is if we live long enough the chaos accumulates in so here what happens in these situations is the at the end of the body has and comes make Solarian curly mode Major countersinking right on some wonders of the unifying so and then you can look like this and eventually the power of gene yeah have duplication messages dead quality after the shock and surgery and if you did that wrong something breaks in production at all validation is different in different places all the fault of different in different places in you find yourself on able to understand the scope it feels like that the accumulation of simple problems has created an overwhelming mass and it feels like you need understand everything in order it's anything and I can tell you from personal experience if you try to tackle the problems at once you will never finish it is not possible to say to clean up the whole mess of ontology can shut the doors where do being being 2 months refactoring will be fine like that those figures of really well the people that pay the bills so all we need is a way to reach a year and somehow C right we need new way of Paul 1 problem and fix it in confidence that our work and that for customers coming where did
Datacomp we're finding on when a fix with extra class to remove those 3 colors he is a call this is
behavior that goes with that data is the unit is not long board that's it belongs whatever object I should make here in escape the experience refactoring because really you can look it up I'm in mining stocks sorry so here's a date range takes 2 arguments necessity faults has 2 methods 1 that returns a rainy winters and we know this is an object that stand in for the data con I can use it in that place and we use it is like this so instead of you I'm about to make this method more complicated which is why people complain about 0 let's do it OK on again object i'd river writers to very much codes and now just plug in right there if you run this got worse by the ITER is a whole new class and this method is longer watch this now this 1 OK well I began working students and that this yeah the other 1 I agree that anymore it's the same thing yeah now we got this and so these 3 methods there's that there's a data comparator the cool thing about data is that if you take it if you find the called you isolate them make objects were then the behavioral coalesce into object is like a field of dreams can thing right if you build it they will come and and what that means is that you can use date ranges everywhere and get consistent behavior through area apps there but weakly range all knowledge of what the same replace all the false workers in place if you change it the change goes everywhere and everyone in Iraq no seasons they would prefer to do this rather than toward we're over in every situation you guys have tons a day it comes here and if the only thing era for the stock is going make objects on it to begin with right the list more this message chain here 0 I
think this message I still hate unity back it's desirable lot of things different so what I saw this everywhere right I'm way out of my own object food-borne dance and I have a message saying that reach which is into my persistent object and sends messages to stuff it gives me back it's OK for my class things about sale but is not OK for my question of things about I think that sale knows about in no it's it's really hard to find hard to convince people about how bad this is entering to new pictures to completely different pictures to try to express the same idea so here's the first one this is about the message passing so I got my by through the set sail thing over there I soon we're to seal and sale inherits from persistence in Active Record for you guys you can feel that in and see that message she's is at the heart the change and then but behind persistence is this whole being enormous cloud of code that somebody else wrote games for free right we love him for it but up in the some numbers of listeners a bunch of other stuff there's all kinds of things that happened that initially somehow persistence and some messages don't worry my pretty head about what that messages in some comes back I get this was back comes back to sail on it returns back to fill in the next thing tho is assumed message right that's what the message passing looks like no emission spectrum a different way this is I think about so that's I think about it when thing about messages here so I think about it when I think about testing entire test you the
less collaborators knows about data region is about sales these are the immediate things I can put a ring around these objects when when the unit test for fish I have to give instances of those collaborators and set them up in order make my test right that's how I sort different contexts however here in this case the knows about that something that's not quite 9 library wanted to clients the next to bring out it's in the next circle as with the door every dot jumps ring here and so why didn't what's what's what's happening here is I know about my collaborators collaborators and if you do this you've probably seen the effects of this in your code if you don't wanna on a database query here you have to create study the standard stuff or mocking marks war in in the East situation where there's a message change sometimes you get in this situation the entire set of potassium million objects right you have to instantiate a bunch of things it's this kind message thing this problem on the if you do that you're getting yourself and undergo a little more attesting about this in a minute but 1st languages and fix the messaging is really easy to fix this so at that
problem all the season would just about a light on the problem here is that there's a concept that is any that's what happened I have this duplication is an idea that underlies it and I haven't given any now 1 of that happens a lot of this this is that there's a math name of the repeating prefix or suffix and when you see that we know almost inevitably of an object it's trying to get out and so what this means is that I I can find the delegated by putting a total method on sale it's as simple as that right write my own method you call using scope for this right here momentum and put on a class and the numbers she's assistant this can happen when expense also of course so what I'm done up with this code and there's no there's no longer violation year-round have a message chain of air and so if we succeed here we've had the dollar number talk a little
bit you're just for this here somewhere blessing gave a talk a couple years ago and how long about about how much reality 1 you test and its direct I can recommend a TV seen its couple years old and he complied tell us what year 2013 lookup Serlin what's a merlot all he isn't budging reality OK so so let's look
about was looking at a kind of test you could write for this code it you could do that well OK so I know I'm until the sale right through is really mine Silas solar and part of the framework and sort of mine rated it made a devil's bargain when it when it inherited off persistence to come for the benefits it would get to pay the price of dependent right I'm unhappy with you test like new up a new film at it's in the message I can check out the comes back this one's the database query I'm always in the database through is not a subclass of Active Record a persistence but it still ran and ran in entire query at this point and if you do this enough of your code some of you probably already had experience in your faces and see if I can tell who the foundations of your test suite learning more and more and more slowly as you get more and more and more code and finally here's what happens it falls down concretely is if you want to refactor fury country factory circuitry was shining must have unit test and quickly and if you couple the unit test for these objects so far away to if you copied couple you test for your objects to behavior you and it's far away that's very slow you going to be on able to refactor with green is what your back and it's really really really important we want your test reached a long but even when I want them to learn quickly all the it's gone OK here we discuss on other about diverge I presented to designs that idea so that the center is I'm going to this class glued to sail I know the name is constant inside my math and I could instead depend only on the mean of the method that the the message on I could do that by injecting a Model now I am not unaware of of the dispute that we sometimes have dependency injection but I I think it's great and I'm a try to convince you that you should be using 1 if I do that then I can now do this I don't really think I'm not very attached to sales of class and I don't really care I think I'm talking to a total possible and if I decide that I'm do real 0 0 and think of objects in terms of the roles they play instead of the class they all are what it means is I'm very comfortable with this idea of the coupling myself from constants injecting players roles yeah if I do that I can but not I can make another player that rolled it it to my mind is equally valid it is just as good all people all things there are calling eyes everything and implement and message is equally did the same thing in my office and so in this case why can't do I'm going to understand curve verbal the McConnell simpler white is geared at getting is that model injected in my test and Act asserted that the right into comes back this is fast it's really now what is it true I know people may be more uncomfortable with this so a source talk about what this Twitter means to do this test this test does this just proves that my method if it's injected with a total October lies below some amplitude the total method will call that method in return the result it gets back that's what got proved here when does not prove is indeed grazing wales walk it OK it does not do that but let me ask you after the Rails framework has furrow and exhaustive tests 1st for whether or not the Navy's Greece 1 In addition to might say all class the cell class is a subclass of persistence Fatemi that I have a test on tonal over there that actually runs a query but it is not necessary for food and John crosses message chain and in database could jump across the network and you did this great at the other I see when I travel around slowly tests killing people and I think the test results society resource for 2 main problems the first one is this message change if you have a message changing code if you commit dinner violations it means that you have to you have to new up the whole network of objects and 1 all those messages would run the tests and that's gonna be slower to the hard understanding hard to maintain so you should hide the delegates should hide the message change with delegates the next thing is even after you've done at which we do here it's possible that you tightly coupled to something that's really slow it's really slowly the tightly couple yourself to slow things we and don't give yourself away to substitute other faster players of those walls you were doomed to slow test now I realize it is possible here tend to store a lot in and say all right I could start their method but by and it does work but I prefer this in its form I have I have a really easy right it's not just that I like this code better it's that this Nietzsche you think of this object is players of the wall not as instances of the class I can use this to this totalise will double the place in my test where I want to give an expense tested it's a really different it is not the same thing to eject this object and break the coupling that the outstanding your test is not equivalent to eject object and we can study this is a very much a of more powerful idea that will improve all of your code not just make that 1 test fast so is 1
more thing we see on doing time we're doing great OK so that you do 1 more code refactoring before finish out once I'm done that now I'm here I
have that here there's a thing called pull up method of pull it up into the superclass I'm not get at the break open Active Record and the packet with total seems like a bad idea isn't the we model here we've that right there and then knows what I've done that code that I put in the model does not look exactly like the code that I'm promoting from the subclasses I did by added some interaction I injected this is just like coregistered with model equal sales and the last example of the things that will find had concrete dependencies on my class I'm injecting as variables of defaults this this is but it this so it's exactly the same idea right this gives you flexibility without adding much complexity now there's a there's a name for this code smell this comes back to the generality right I just did I know I'm really right but here's the thing if the methods are sure so the like what we want the promise specular generalities your wrong cost you money because it increases the complexity of code in the meantime when you try to read it and I search you that at least for me I know it's partly when used to form my method the short and I routinely injected dependencies and so I do not far I find that the increase in flexibility is of more than outweighs the increasing complexity this does not feel very much more complex to me when it's in which way more useful now anybody can call this method on a date that it with point he acted in in some in value so we would use a model OK wait expert and this 1 which is why it was the site depends injection is also yeah so we can do that user model just like said there we go and so that's it if you're not intimately
familiar with code smells you can remove yourself if you're waiting to move up to that next level programming to to make that transition to being to the next level of proficiency in the way to do it is to go 1 code smells into along those recipes for factor these ideas are not new they've been around the book the book was written in the 19 nineties and I know that many of you here probably to begin programming since the for some of you this because all were then you are and so he might have the sense that it is apart from the Old Testament programming a I mean it's it's a it's a body of work that is practical concrete advice about how code if if you're unaware of it should go on many problems that we have that feels on instrumental can be solved by purely mechanical operations in the cool thing is it doesn't take the final writing code so there's nothing left for you to do when does it take it removes the team safely so you can concentrate on the hard problems so if you want
neurotransmitters numbers like putting on glasses right it turns that mass into something like this and following the smells like to make it straightforward easy to understand objects the easy test a pleasure reuse and wait for
it the and so why you encode smells you should look at
rank this feature here may not OK this is a written notice the wonderful is a cool way to read is a static analysis tool that you can run it into code what continues you have so you really really go figure i this running into 1 her story archival pulsing everything that state you can run this tool on your code and it will tell you what to go look at so smells on a bad thing
they're actually great and they're all over
our code they have to come into like I again I have a new puppy and if that 1 might be would reach in and off 1 of those pedals and and you should dare to write a song 1 more
about smells they're not back there just information and needs much of the information is neutral if you want to translate relation would pizza online but long bike ride to best knowledge so when I look back at my own code could I
wrote 2 years or 4 years vibrational it's really commentary loaded currency when for wrote this it's a wonderful thing better job since the very best thing right which option imagine having can you imagine having a job where you know better today than you were 5 years it's such a depressing thought I won't look at my own code he Koizumi done better me someone something since in what a wonderful thing that this so I started this talk with a cup of coffee and then in the same way right so late tired past coming up the best time to drink coffee with now but tomorrow morning it out to be a great amount go were the code smells and level of you thank you I
found a
I I say this because it's so close to being and and even very patient with me but it really is coming at the editor right now it's giving greet I'm right by the sea and rain is very diverse and tortures from 1 to the point I'm really proud of it so you need want me and you please because all this is that the you know all
Spiegelung <Mathematik>
Dichte <Physik>
Gewichtete Summe
Schreiben <Datenverarbeitung>
Puls <Technik>
Kette <Mathematik>
Elektronischer Programmführer
Kollaboration <Informatik>
Ordnung <Mathematik>
Tabelle <Informatik>
Objekt <Kategorie>
Selbst organisierendes System
Mathematische Logik
Objektorientierte Programmiersprache
Endogene Variable
Äußere Algebra eines Moduls
Spezifisches Volumen
Ganze Funktion
Konvexe Hülle
Chirurgie <Mathematik>
Offene Menge
Faktor <Algebra>
Befehl <Informatik>
Komplex <Algebra>
Total <Mathematik>
Arithmetischer Ausdruck
Konfiguration <Informatik>
Spannweite <Stochastik>
Arithmetisches Mittel
Hierarchische Struktur
Web Site
Total <Mathematik>
Hierarchische Struktur
Zellularer Automat
Data Mining
Leistung <Physik>
Objekt <Kategorie>
SALEM <Programm>
Wald <Graphentheorie>
Divergenz <Vektoranalysis>
Chirurgie <Mathematik>
Metropolitan area network
App <Programm>
Suite <Programmpaket>
Befehl <Informatik>
Kategorie <Mathematik>
Dichte <Stochastik>
Kontextbezogenes System
Rechter Winkel
Klasse <Mathematik>
Spannweite <Stochastik>
Parallele Schnittstelle
Einheit <Mathematik>
Prozess <Informatik>
Maskierung <Informatik>
Figurierte Zahl
Nichtlinearer Operator
Amenable Gruppe
Verkettung <Informatik>
Twitter <Softwareplattform>
Primitive <Informatik>
Interaktives Fernsehen
Framework <Informatik>
Zusammenhängender Graph
Ontologie <Wissensverarbeitung>
Einfache Genauigkeit
Mapping <Computergraphik>


Formale Metadaten

Titel Get a Whiff of This
Serientitel RailsConf 2016
Teil 78
Anzahl der Teile 89
Autor Metz, Sandi
Lizenz CC-Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben.
DOI 10.5446/31517
Herausgeber Confreaks, LLC
Erscheinungsjahr 2016
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik
Abstract Most code is a mess. Most new requirements change existing code. Ergo, much our work involves altering imperfect code. That's the bad news. The good news is that every big mess consists of many small ones. Certain small problems occur so frequently that they've been given names, and are collectively known as "Code Smells". This talk shows how to take a pile of perplexing code, identify the "smells", and surgically apply the curative refactorings. It breaks a messy problem into clear-cut pieces, and proves that you can fix anything without being forced to understand everything.

Ähnliche Filme