Quality Code: Software Testing Principles, Practices, and Patterns (Jason Arnold's Library) by Stephen Vance

Quality Code: Software Testing Principles, Practices, and Patterns (Jason Arnold's Library) by Stephen Vance

Author:Stephen Vance
Language: eng
Format: epub
Publisher: Addison-Wesley Professional
Published: 2014-08-10T16:00:00+00:00


...

}

Naming the Unnamed

Many languages support the declaration of entities in a nested scope. Java supports inner classes. C++ supports nested classes. JavaScript lets you declare functions in just about any scope.

Several languages, including Java and JavaScript, allow you to declare entities anonymously. In Java, you create anonymous inner classes, commonly for simple or one-off callback classes like Swing event handlers (see Listing 9-8). JavaScript developers pervasively use anonymous functions as callbacks (Listing 9-9), for immediate execution, and to wrap function declarations to freeze closures.

Listing 9-8: Example of an anonymous inner class as a Java Swing event listener

Click here to view code image

button.addActionListener(

new ActionListener() {

public void ActionPerformed(ActionEvent event) {

System.out.println(event.getActionCommand());

}

});

Listing 9-9: JavaScript anonymous function as a click event handler in jQuery

Click here to view code image

$('.clickable').bind(''click', function(event) {

alert('Element has class(es): ' + event.target.className);

});

Anonymous entities are convenient to create, but difficult to test. They often have no visible reference in any scope external to the one in which they are declared. In many cases, the execution context dictates their signature (for functions) or interfaces (for classes). A simple Extract Class or Extract Method refactoring can bring anonymous entities into a visible scope with a name through which they can be referenced for testing purposes.



Download



Copyright Disclaimer:
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.