With a couple of AWK scripts, called from an ANT script, you can - in about an hour - perform the first step of reading a large body of code. The "take inventory step". Here is a pretty quick analysis of the Spring 2.0 source code.
* 1437 Classes and interfaces.
* 178 Unique suffixes.
* Most classes are around 30 lines long. Very few above a 100. Longest class is 269 lines.
* Class names are long and descriptive.
* Longest class name is 56 characters: DelegatePerTargetObjectDelegatingIntroductionInterceptor
Reading the Spring class names is very instructive. Extremely expressive names. A great model to follow as a naming standard.
The suffixes that occur more than 5 times with their frequency counts (studying the suffixes give you a good idea of the "concepts" in the code :
150 Exception
79 Bean
67 Utils
63 Resolver
51 Factory
49 Source
48 Interceptor
34 Support
28 View
28 Context
26 Tag
25 Controller
24 Editor
24 Adapter
22 Handler
21 Processor
20 Callback
19 Accessor
17 Manager
17 Listener
16 Parser
16 Extractor
16 Creator
15 Holder
15 Filter
15 Advisor
14 Pointcut
14 Definition
13 Mapping
13 Executor
12 Template
12 Resource
12 Configurer
12 Aware
11 Type
11 Proxy
11 Operations
11 Advice
10 Loader
10 Exporter
10 Assembler
9 Comparator
8 Result
8 Incrementer
8 Attribute
7 Translator
7 Strategy
7 Servlet
7 Reader
7 Operation
7 Matcher
7 Enum
6 Value
6 Request
6 Provider
6 Lookup
6 Event
5 Values
5 Synchronization
5 Status
5 Setter
5 Registry
5 Parameter
5 Locator
5 Helper
5 Attributes
The suffixes alphabetically, with their frequency counts are:
19 Accessor
24 Adapter
1 Adapter102
11 Advice
1 Advised
15 Advisor
1 Advisors
10 Assembler
1 Assert
8 Attribute
5 Attributes
12 Aware
79 Bean
4 Binder
1 Bootstrap
2 Builder
1 Bundle
1 Call
20 Callback
2 Chain
1 Coded
1 Codes
9 Comparator
4 Config
1 Configuration
12 Configurer
1 Constants
4 Container
3 Container102
28 Context
25 Controller
1 Conventions
3 Converter
1 Converter102
16 Creator
2 Data
1 Decoder
4 Decorator
14 Definition
1 Delegate
2 Dialect
1 Discover
3 Discoverer
1 Disposer
24 Editor
3 Entry
7 Enum
2 Error
2 Errors
6 Event
150 Exception
13 Executor
10 Exporter
16 Extractor
51 Factory
1 Factory102
2 File
15 Filter
1 Filters
1 Flow
1 Form
1 Function
4 Generator
2 Handle
22 Handler
5 Helper
15 Holder
4 Impl
1 In
8 Incrementer
2 Info
1 Information
1 Initializer
48 Interceptor
3 Invocation
2 Invoker
1 Lifecycle
1 List
17 Listener
10 Loader
1 Location
5 Locator
1 Log
1 Log904
6 Lookup
17 Manager
1 Manager102
4 Map
4 Mapper
13 Mapping
7 Matcher
1 Matchers
1 Matches
1 Mergeable
4 Message
1 Modified
2 Monitor
4 Multicaster
1 Naming
1 Notification
4 Object
7 Operation
11 Operations
1 Ordered
3 Override
1 Overrides
5 Parameter
1 Parameters
16 Parser
2 Persister
1 Point
14 Pointcut
1 Pointcuts
1 Pool
2 Portlet
1 Preparator
1 Problem
1 Procedure
21 Processor
1 Properties
6 Provider
11 Proxy
3 Publisher
3 Query
7 Reader
1 Record
3 Reference
1 References
1 Refreshable
2 Registrar
5 Registry
1 Replacer
2 Reporter
6 Request
2 Resolvable
63 Resolver
12 Resource
8 Result
1 Results
2 Runnable
4 Scope
2 Sender
7 Servlet
4 Set
5 Setter
49 Source
1 Sql
1 State
1 Stats
5 Status
1 Store
7 Strategy
1 Stream
4 Styler
34 Support
5 Synchronization
1 System
26 Tag
2 Task
12 Template
1 Template102
2 Theme
1 Translation
7 Translator
1 Trigger
11 Type
2 Update
67 Utils
2 Validator
6 Value
5 Values
2 Version
28 View
1 Visitor
1 Watch
1 Work
4 Wrapper
2 Writer
Some typical class names (alphabetical by suffix):
AbstractPropertyAccessor
HibernateAccessor
JdbcAccessor
AfterReturningAdviceAdapter
InstantiationAwareBeanPostProcessorAdapter
TransactionAwareSessionAdapter
AspectJExpressionPointcutAdvisor
AbstractConfigurableMBeanInfoAssembler
DelegatingTransactionAttribute
ApplicationEventPublisherAware
AbstractSingletonProxyFactoryBean
LocalConnectionFactoryBean
BeanDefinitionRegistryBuilder
PersistenceBrokerCallback
NullSafeComparator
ServletContextPropertyPlaceholderConfigurer
SimpleMessageListenerContainer
ConfigurableApplicationContext
AbstractWizardFormController
ServletWrappingController
PreparedStatementCreator
ScopedProxyBeanDefinitionDecorator
PrioritizedParameterNameDiscoverer
InternetAddressEditor
BadSqlGrammarException
BeanNotOfRequiredTypeException
CannotGetJdbcConnectionException
HttpSessionRequiredException
ModelAndViewDefiningException
TypeMismatchException
SimpleAsyncTaskExecutor
RowMapperResultSetExtractor
AbstractPoolingServerSessionFactory
HashMapCachingAdvisorChainFactory
WebContentGenerator
OracleLobHandler
AfterReturningAdviceInterceptor
AdvisedSupportListener
ServletContextResourceLoader
BeanFactoryLocator
HibernateTransactionManager
AbstractHandlerMapping
InterceptorAndDynamicMethodMatcher
MimeMailMessage
HibernateOperations
JdbcOperations
ResultSetSupportingSqlParameter
RemoteStatelessSessionBeanDefinitionParser
DefaultPropertiesPersister
ApplicationContextAwareProcessor
TransactionAwareDataSourceConnectionProvider
TransactionAwarePersistenceManagerFactoryProxy
ModelMBeanNotificationPublisher
SqlQuery
AbstractBeanDefinitionReader
ResourceEditorRegistrar
AbstractCachingViewResolver
AbstractResource
FileSystemResource
RemoteInvocationResult
SchedulingAwareRunnable
DispatcherServlet
ManagedSet
AbstractRefreshableTargetSource
CommonsPoolTargetSource
ObjectNamingStrategy
DefaultValueStyler
JdbcDaoSupport
JtaSessionSynchronization
HiddenInputTag
OptionTag
NamedParameterJdbcTemplate
TransactionTemplate
PersistenceExceptionTranslator
BlobStringType
ClobStringType
BeanFactoryUtils
DataAccessUtils
NumberUtils
AbstractSqlTypeValue
AbstractExcelView
AbstractPdfView
ActionRequestWrapper
OptionWriter
Recent Comments