97 Things Every Programmer Should Know - O'Reilly Media Although I've written many, many lines of code, I've never worked in a 'world class programming shop'. After I had been programming for awhile, I sought a job in what I hoped would be such a shop: a place where things were done "right". Instead, I have always found myself in positions where creative people hack code and implement systems. And, some of those systems were high quality enterprise applications. I suspect, though, that my vision of a 'world class programming shop' may not really exist. There are places where protocols are developed and their use enforced and best practices identified and implemented. 97 Things Every Programmer Should Know: Collective Wisdom From the Experts is a collection of short essays addressing many, many facets of the application development process. Other essays convey useful advice such as having a coding standard and enforcing its use. In the 97 essays, nearly every aspect of the application development process is explored and described.
Activité enfant pour apprendre à coder - Magic Makers About - Project Euler Rosetta Code linux - Getting root permissions on a file inside of vi Powerful Command Line Tools For Developers Advertisement Life as a Web developer can be hard when things start going wrong. The problem could be in any number of places. Is there a problem with the request you’re sending, is the problem with the response, is there a problem with a request in a third party library you’re using, is an external API failing? Good tools are invaluable in figuring out where problems lie, and can also help to prevent problems from occurring in the first place, or just help you to be more efficient in general. Command line tools are particularly useful because they lend themselves well to automation and scripting, where they can be combined and reused in all sorts of different ways. (Image credit: kolnikcollection)1 Curl Curl is a network transfer tool that’s very similar to Wget, the main difference being that by default Wget saves to a file, and curl outputs to the command line. $ curl ifconfig.me 184.108.40.206 The -L option is handy, and makes curl automatically follow redirects. Ngrep Netcat Sshuttle Siege
Design Patterns | Object Oriented Design visionmedia/jade Presentation Model Represent the state and behavior of the presentation independently of the GUI controls used in the interface Also Known As: Application Model GUIs consist of widgets that contain the state of the GUI screen. Leaving the state of the GUI in widgets makes it harder to get at this state, since that involves manipulating widget APIs, and also encourages putting presentation behavior in the view class. Presentation Model pulls the state and behavior of the view out into a model class that is part of the presentation. The Presentation Model coordinates with the domain layer and provides an interface to the view that minimizes decision making in the view. Presentation Model may interact with several domain objects, but Presentation Model is not a GUI friendly facade to a specific domain object. Presentation Model is known to users of Visual Works Smalltalk as Application Model How it Works To do this the Presentation Model will have data fields for all the dynamic information of the view.
Alpha list of refactorings You have constructors on subclasses with mostly identical bodies. Create a superclass constructor; call this from the subclass methods. more… Two subclasses have the same field. Move the field to the superclass. more… You have methods with identical results on subclasses. Move them to the superclass. more… A field is used only by some subclasses. Move the field to those subclasses. more… Behavior on a superclass is relevant only for some of its subclasses. Move it to those subclasses. more… You have conditional code that is unnecessarily verbose and does not use the most readable Ruby construct. Replace the conditional code with the more idiomatic Ruby construct. more… Remove Assignments to Parameters The code assigns to a parameter. Use a temporary variable instead. more… You have a variable that is acting as a control flag for a series of boolean expressions. Use a break or return instead. more… A class is doing too much simple delegation. Get the client to call the delegate directly. more… more… Remove it. more…
Recommended Reading for Developers Code Complete 2 Steve McConnell's Code Complete 2 is the Joy of Cooking for software developers. Reading it means that you enjoy your work, you're serious about what you do, and you want to keep improving. In Code Complete, Steve notes that the average programmer reads less than one technical book per year. The very act of reading this book already sets you apart from probably ninety percent of your fellow developers. I like this book so much that the title of this very website is derived from it – the examples of what not to do are tagged with the "Coding Horror" icon. The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition) Arguably the only classic book in our field. I challenge any developer to pick up a copy of The Mythical Man Month and not find this tale of a long-defunct OS, and the long-defunct team that developed it, startlingly relevant. Don't Make Me Think: A Common Sense Approach to Web Usability Er… yeah. Rapid Development Why?
The Architecture of Open Source Applications The Rise of ``Worse is Better'' Previous: Lisp's Apparent Failures Up: Lisp's Apparent Failures Next: Good Lisp Programming is Hard I and just about every designer of Common Lisp and CLOS has had extreme exposure to the MIT/Stanford style of design. The essence of this style can be captured by the phrase ``the right thing.'' To such a designer it is important to get all of the following characteristics right: Simplicity-the design must be simple, both in implementation and interface. I believe most people would agree that these are good characteristics. The worse-is-better philosophy is only slightly different: Simplicity-the design must be simple, both in implementation and interface. Early Unix and C are examples of the use of this school of design, and I will call the use of this design strategy the ``New Jersey approach.'' Let me start out by retelling a story that shows that the MIT/New-Jersey distinction is valid and that proponents of each philosophy actually believe their philosophy is better. email@example.com