Data Serialization Concepts
Round Trip Shape
Encode a small record and decode one field back.
round-trip-shape
A round trip preserves the shape of data through encode and decode steps.
Round Trip Shape
round_trip_shape.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
my $score = 7;
my $name = "Kai";
my $encoded = join("|", $name, $score);
my ($decoded_name, $decoded_score) = split /\|/, $encoded;
my $same_score = $decoded_score == $score ? "yes" : "no";
print "encoded=$encoded\n";
print "decoded=$decoded_name\n";
print "score=$decoded_score\n";
print "same_score=$same_score\n";
use strict;
use warnings;
my $score = 3;
my $name = "Kai";
my $encoded = join("|", $name, $score);
my ($decoded_name, $decoded_score) = split /\|/, $encoded;
my $same_score = $decoded_score == $score ? "yes" : "no";
print "encoded=$encoded\n";
print "decoded=$decoded_name\n";
print "score=$decoded_score\n";
print "same_score=$same_score\n";
use strict;
use warnings;
my $score = 10;
my $name = "Kai";
my $encoded = join("|", $name, $score);
my ($decoded_name, $decoded_score) = split /\|/, $encoded;
my $same_score = $decoded_score == $score ? "yes" : "no";
print "encoded=$encoded\n";
print "decoded=$decoded_name\n";
print "score=$decoded_score\n";
print "same_score=$same_score\n";
$score ← 7, $name ← Kai, $encoded ← Kai|7, $decoded_name ← Kai
4my $score→ 7 = 7; #@score=3, 105my $name→ Kai = "Kai";6my $encoded→ Kai|7 = join("|", $nameKai, $score7);7my ($decoded_name→ Kai, $decoded_score→ 7) = split /\|/, $encodedKai|7;8my $same_score→ yes = $decoded_score7 == $score7 ? "yes" : "no";910print "encoded=$encodedKai|7\n";11print "decoded=$decoded_nameKai\n";12print "score=$decoded_score7\n";13print "same_score=$same_scoreyes\n";outputencoded=Kai|7 decoded=Kai score=7 same_score=yes
$score ← 3, $name ← Kai, $encoded ← Kai|3, $decoded_name ← Kai
4my $score→ 3 = 3;5my $name→ Kai = "Kai";6my $encoded→ Kai|3 = join("|", $nameKai, $score3);7my ($decoded_name→ Kai, $decoded_score→ 3) = split /\|/, $encodedKai|3;8my $same_score→ yes = $decoded_score3 == $score3 ? "yes" : "no";910print "encoded=$encodedKai|3\n";11print "decoded=$decoded_nameKai\n";12print "score=$decoded_score3\n";13print "same_score=$same_scoreyes\n";outputencoded=Kai|3 decoded=Kai score=3 same_score=yes
$score ← 10, $name ← Kai, $encoded ← Kai|10, $decoded_name ← Kai
4my $score→ 10 = 10;5my $name→ Kai = "Kai";6my $encoded→ Kai|10 = join("|", $nameKai, $score10);7my ($decoded_name→ Kai, $decoded_score→ 10) = split /\|/, $encodedKai|10;8my $same_score→ yes = $decoded_score10 == $score10 ? "yes" : "no";910print "encoded=$encodedKai|10\n";11print "decoded=$decoded_nameKai\n";12print "score=$decoded_score10\n";13print "same_score=$same_scoreyes\n";outputencoded=Kai|10 decoded=Kai score=10 same_score=yes