aws-samples / aws-big-data-blog
Unit Size

The distribution of size of units (measured in lines of code).

Intro
  • Unit size measurements show the distribution of size of units of code (methods, functions...).
  • Units are classified in four categories based on their size (lines of code): 1-20 (small units), 20-50 (medium size units), 51-100 (long units), 101+ (very long units).
  • You should aim at keeping units small (< 20 lines). Long units may become "bloaters", code that have increased to such gargantuan proportions that they are hard to work with.
Learn more...
Unit Size Overall
  • There are 509 units with 5,946 lines of code in units (50.1% of code).
    • 2 very long units (234 lines of code)
    • 8 long units (521 lines of code)
    • 75 medium size units (2,252 lines of code)
    • 86 small units (1,303 lines of code)
    • 338 very small units (1,636 lines of code)
3% | 8% | 37% | 21% | 27%
Legend:
101+
51-100
21-50
11-20
1-10
Unit Size per Extension
101+
51-100
21-50
11-20
1-10
js6% | 7% | 41% | 23% | 20%
java3% | 10% | 33% | 20% | 31%
py0% | 0% | 48% | 31% | 20%
scala0% | 0% | 53% | 15% | 31%
Unit Size per Logical Component
primary logical decomposition
101+
51-100
21-50
11-20
1-10
aws-blog-kinesis-data-visualization7% | 0% | 37% | 26% | 29%
aws-blog-titan-graph-database93% | 0% | 0% | 0% | 6%
aws-blog-hbase-on-emr0% | 22% | 22% | 19% | 35%
aws-blog-lambda-map-reduce-streaming0% | 33% | 51% | 9% | 5%
BDB-701-Moving-From-Transactional-to-Stateful-Batch-Processing0% | 20% | 43% | 28% | 6%
aws-blog-event-driven-batch-analytics0% | 24% | 49% | 14% | 11%
aws-blog-mirth-healthcare-hub0% | 20% | 33% | 30% | 14%
aws-blog-kinesis-beanstalk-workers0% | 0% | 62% | 12% | 25%
aws-blog-real-time-in-memory-oltp-and-analytics-with-apache-ignite0% | 0% | 64% | 5% | 29%
aws-blog-firehose-lambda-elasticsearch-near-real-time-discovery-platform0% | 0% | 62% | 15% | 21%
aws-blog-kinesis-storm-clickstream-app0% | 0% | 51% | 17% | 31%
aws-blog-jobserver-emr0% | 0% | 40% | 36% | 22%
aws-blog-s3-index-with-lambda-ddb0% | 0% | 22% | 27% | 50%
aws-blog-firehose-lambda0% | 0% | 35% | 38% | 25%
aws-blog-vpcflowlogs-athena-quicksight0% | 0% | 13% | 23% | 62%
aws-blog-sparkstreaming-from-kafka0% | 0% | 100% | 0% | 0%
aws-blog-athena-genomics0% | 0% | 100% | 0% | 0%
aws-blog-strata20160% | 0% | 71% | 0% | 28%
aws-blog-nodejs-on-emr0% | 0% | 53% | 37% | 8%
aws-blog-elasticsearch-cascading-commoncrawl0% | 0% | 0% | 82% | 17%
aws-blog-multi-az-multi-region-redshift0% | 0% | 0% | 100% | 0%
aws-blog-machine-learning-with-spark0% | 0% | 0% | 35% | 65%
aws-blog-iot-athena-quicksight-bi0% | 0% | 0% | 0% | 100%
aws-blog-real-time-clickstream0% | 0% | 0% | 0% | 100%
aws-blog-analyzing-using-ipython-notebook0% | 0% | 0% | 0% | 100%
aws-blog-spark-parquet-conversion0% | 0% | 0% | 0% | 100%
Alternative Visuals
Longest Units
Top 20 longest units
Unit# linesMcCabe index# params
THREE.TrackballControls = function()
in aws-blog-kinesis-data-visualization/Globe/public/js/TrackballControls.js
120 9 2
public static void load()
in aws-blog-titan-graph-database/src/main/java/com/amazonaws/bigdatablog/titanrestaurants/RestaurantFactory.java
114 18 1
public boolean equals()
in aws-blog-hbase-on-emr/hbase-connector/src/main/java/com/amazonaws/hbase/kinesis/KinesisMessageModel.java
95 36 1
LambdaStream.prototype._invoke = function()
in aws-blog-lambda-map-reduce-streaming/streams.js
89 15 1
public StateIndexerWorkerOutput runStateIndexerWorker()
in BDB-701-Moving-From-Transactional-to-Stateful-Batch-Processing/lambda/src/main/java/com/amazon/aws/blog/StateIndexerLambdaImpl.java
64 8 1
public static void createAndWaitForStreamToBecomeAvailable()
in aws-blog-hbase-on-emr/hbase-connector/src/main/java/com/amazonaws/hbase/kinesis/utils/KinesisUtils.java
57 14 3
var countWords = function()
in aws-blog-lambda-map-reduce-streaming/wordcount.js
57 6 2
public static String createCluster()
in aws-blog-hbase-on-emr/hbase-connector/src/main/java/com/amazonaws/hbase/kinesis/utils/EMRUtils.java
54 14 8
public static void run()
in aws-blog-event-driven-batch-analytics/src/main/java/com/amazonaws/bigdatablog/edba/emr/ProcessVendorTrasactions.java
54 1 1
public static void dynamoInsertDicom()
in aws-blog-mirth-healthcare-hub/mirth-aws-sample-app/src/main/java/org/mirth/project/MCAWS.java
51 11 4
public Iterator call()
in BDB-701-Moving-From-Transactional-to-Stateful-Batch-Processing/emr/src/main/java/com/amazon/aws/blog/function/PreFetcherFlatMapFunction.java
48 7 1
function touchmove()
in aws-blog-kinesis-data-visualization/Globe/public/js/OrbitControls.js
46 13 1
private static void configure()
in aws-blog-kinesis-storm-clickstream-app/src/main/java/KinesisStormClickstreamApp/SampleTopology.java
44 8 1
public void runStateIndexerCoordinator()
in BDB-701-Moving-From-Transactional-to-Stateful-Batch-Processing/lambda/src/main/java/com/amazon/aws/blog/StateIndexerLambdaImpl.java
44 7 1
setFromEuler: function()
in aws-blog-kinesis-data-visualization/Globe/public/js/Quaternion.js
44 9 2
public void configure()
in aws-blog-kinesis-beanstalk-workers/src/main/java/com/amazonaws/services/kinesis/ManagedConsumer.java
43 9 0
exports.handler = function()
in aws-blog-lambda-map-reduce-streaming/wordcount.js
43 10 2
public void run()
in BDB-701-Moving-From-Transactional-to-Stateful-Batch-Processing/emr/src/main/java/com/amazon/aws/blog/StatefulMain.java
42 4 1
private static void loadProperties()
in aws-blog-kinesis-data-visualization/KinesisApplication/src/main/java/com/amazonaws/kinesis/dataviz/kinesisclient/KinesisApplication.java
42 8 1
exports.handler = function()
in aws-blog-lambda-map-reduce-streaming/cascade.js
42 11 2