Knowledge

Boilerplate code

Source 📝

25: 894:
in OOP languages also contribute to the amount of boilerplate. A 2015 study on popular Java projects shows that 60% of methods can be uniquely identified by the occurrence of 4.6% of its tokens, making the remaining 95.4% boilerplate irrelevant to logic. The researchers believe this result would
326:
instance variables. The definitions of these methods can frequently be regarded as boilerplate. Although the code will vary from one class to another, it is sufficiently stereotypical in structure that it would be better generated automatically than written by hand. For example, in the following
305:
This checks, and sets up, a global flag to tell the compiler whether the file myinterface.h has already been included. As many interdepending files may be involved in the compilation of a module, this avoids processing the same header multiple times, (which would lead to errors due to multiple
705:
In some other programming languages it may be possible to achieve the same thing with less boilerplate, when the language has built-in support for such common constructs. For example, the equivalent of the above Java code can be expressed in
1058:
tag is technically redundant when coming directly from a web server configured to send the character encoding in an HTTP header, though it becomes useful when the HTML response is saved in an
637:
To reduce the amount of boilerplate, many frameworks have been developed, e.g. Lombok for Java. The same code as above is auto-generated by Lombok using
197:, they became known as "boiler plates", and their resulting text—"boilerplate text". As the stories that were distributed by boiler plates were usually " 628: 264:, which identifies the file as a Perl script that can be executed directly on the command line on Unix/Linux systems. The other two are 129:, are sections of code that are repeated in multiple places with little to no variation. When using languages that are considered 1556: 1551: 1421:
Martin Velez; Dong Qiu; You Zhou; Earl T. Barr; Zhendong Su (5 Feb 2015). "On the Lexical Distinguishability of Source Code ".
89: 61: 1515: 1253: 224:
One form of boilerplate consists of declarations which, while not part of the program logic or the language's essential
68: 332: 1269: 108: 42: 1112:, the following boilerplate code can be used to modify if code can only be executed in or out of a module context. 848:
Starting with C# 9.0 there is an opportunity to use Records which generate classes with Properties automatically:
75: 1174: 1180: 765: 225: 46: 1066:'s HTML/CSS style guide recommends that all optional tags be omitted, resulting in much less boilerplate. The 1109: 891: 213: 167:. Another option would be to move it into a subroutine so that it can be called instead of being duplicated. 145: 57: 707: 1250:
Proceedings of the 2003 ACM SIGPLAN International Workshop on Types in Languages Design and Implementation
1177: – Macro processor that is not tied to or integrated with a particular language or piece of software. 1442: 328: 315: 148:(which provides good default values, reducing the need to specify program details in every project) and 1491: 1067: 152:(which uses models and model-to-code generators, eliminating the need for manual boilerplate code). 1192: 149: 1378: 1341: 1168: 265: 35: 911:, the following boilerplate is used as a basic empty template and is present in most web pages: 1204: 769: 133:, the programmer must write a lot of boilerplate code to accomplish only minor functionality. 82: 1210: 624: 1219: – Software designed to combine templates with a data model to produce result documents 1546: 319: 276: 8: 1317: 1222: 1186: 201:" rather than "serious" news, the term became synonymous with unoriginal, repeated text. 212:
but is interleaved with it in order to keep data structures updated or handle secondary
140:(which has the computer automatically write the needed boilerplate code or insert it at 1422: 1275: 1216: 176: 1265: 1245: 269: 186: 1279: 1257: 1397: 1171: – Language construct that specifies how a compiler should process its input 642: 638: 137: 1293: 323: 261: 228:, are added to the start of a source file as a matter of custom. The following 209: 198: 190: 163: 136:
The need for boilerplate can be reduced through high-level mechanisms such as
1540: 280: 157: 1246:"Scrap your boilerplate: a practical design pattern for generic programming" 331:
class representing a pet, almost all the code is boilerplate except for the
268:
turning on warnings and strict mode, which are mandated by fashionable Perl
1198: 141: 1261: 611:
Most of the boilerplate in this example exists to fulfill requirements of
193:. Because of their resemblance to the metal plates used in the making of 1420: 16:
Code that has to be included in many places with little or no alteration
1467: 896: 612: 182: 1213: – Small region of re-usable source code, machine code, or text 1183: – Traditional first example of a computer programming language 24: 1427: 1207: – Code generation technique or a project generation technique 1189: – Collection of resources used to develop a computer program 1132:# Anything placed here will never be executed in a module context. 1153:# Anything placed here will only be executed in a module context. 634:
In Java 14, record classes were added to fight with this issue.
1359: 1063: 1022: 194: 189:
were sent to subscribing newspapers in the form of prepared
185:
business. Columns and other pieces that were distributed by
1195: – Rule for substituting a set input with a set output 908: 229: 1037:
tags may be safely omitted under most circumstances. The
1201: – Program that processes input for another program 155:It is also possible to move boilerplate code to an 49:. Unsourced material may be challenged and removed. 1443:"HTML Standard - The HTML syntax - Optional tags" 1538: 309: 1468:"Is the charset meta tag required with HTML5?" 161:so that it can be inherited by any number of 322:classes are often provided with methods for 208:, referring to code that is not part of the 1243: 1244:Lämmel, Ralf; Jones, Simon Peyton (2003). 1426: 109:Learn how and when to remove this message 772:with compiler generated backing fields: 1395: 1539: 1398:"Lombok reduces your boilerplate code" 1025:HTML Living Standard defines that the 1376: 885: 899:in procedural languages in general. 47:adding citations to reliable sources 18: 13: 232:example demonstrates boilerplate: 14: 1568: 306:definitions with the same name). 1225: – System in web publishing 23: 1516:"HTML page has non-empty title" 1508: 1484: 1460: 1396:Frankel, Nicolas (2009-12-07). 1175:General-purpose macro processor 1038: 34:needs additional citations for 1435: 1414: 1389: 1370: 1352: 1334: 1310: 1286: 1237: 1: 1557:Software engineering folklore 1552:Computer programming folklore 1492:"Google HTML/CSS Style Guide" 1230: 1062:file, cache, or web archive. 890:In addition to declarations, 710:using just one line of code: 310:In Java and similar platforms 275:This next example is a C/C++ 146:convention over configuration 629:accessor and mutator methods 7: 1161: 219: 10: 1573: 174: 1377:Evans, Ben (2020-11-01). 1103: 1068:World Wide Web Consortium 170: 121:In computer programming, 1193:Macro (computer science) 1114: 1076: 1070:states that the element 913: 850: 774: 712: 700: 647: 354: 288: 234: 181:The term arose from the 150:model-driven engineering 1181:"Hello, World!" program 1169:Directive (programming) 902: 350: 1379:"Records Come to Java" 1252:. TLDI '03. New York: 1205:Scaffold (programming) 1262:10.1145/604174.604179 1211:Snippet (programming) 1079:<!DOCTYPE html> 916:<!DOCTYPE html> 759: 641:, which is a form of 631:would not be needed. 294:#define MYINTERFACE_H 291:#ifndef MYINTERFACE_H 175:Further information: 615:. If the variable's 277:programming language 260:The first line is a 43:improve this article 1223:Web template system 1187:Library (computing) 1074:must not be empty: 650:@AllArgsConstructor 324:getting and setting 1256:. pp. 26–37. 1217:Template processor 1147:'__main__' 1126:'__main__' 886:Method boilerplate 204:A related term is 177:Boilerplate (text) 58:"Boilerplate code" 1472:stackoverflow.com 1360:"JEP 395: Record" 1052:"UTF-8" 958:"UTF-8" 623:were declared as 270:programming style 119: 118: 111: 93: 1564: 1531: 1530: 1528: 1526: 1512: 1506: 1505: 1503: 1502: 1496:google.github.io 1488: 1482: 1481: 1479: 1478: 1464: 1458: 1457: 1455: 1454: 1439: 1433: 1432: 1430: 1418: 1412: 1411: 1409: 1408: 1393: 1387: 1386: 1383:blogs.oracle.com 1374: 1368: 1367: 1356: 1350: 1349: 1342:"Record Classes" 1338: 1332: 1331: 1329: 1328: 1314: 1308: 1307: 1305: 1304: 1290: 1284: 1283: 1241: 1157: 1154: 1151: 1148: 1145: 1142: 1139: 1136: 1133: 1130: 1127: 1124: 1121: 1118: 1099: 1096: 1093: 1089: 1086: 1083: 1080: 1073: 1061: 1057: 1056: 1053: 1050: 1047: 1044: 1041: 1036: 1032: 1028: 1017: 1014: 1011: 1008: 1005: 1002: 999: 996: 993: 990: 987: 984: 981: 978: 975: 971: 968: 965: 962: 959: 956: 953: 950: 947: 944: 941: 938: 935: 932: 929: 926: 923: 920: 917: 881: 878: 875: 872: 869: 866: 863: 860: 857: 854: 844: 841: 838: 835: 832: 829: 826: 823: 820: 817: 814: 811: 808: 805: 802: 799: 796: 793: 790: 787: 784: 781: 778: 768:using automatic 755: 752: 749: 746: 743: 740: 737: 734: 731: 728: 725: 722: 719: 716: 696: 693: 690: 687: 684: 681: 678: 675: 672: 669: 666: 663: 660: 657: 654: 651: 639:Java annotations 607: 604: 601: 598: 595: 592: 589: 586: 583: 580: 577: 574: 571: 568: 565: 562: 559: 556: 553: 550: 547: 544: 541: 538: 535: 532: 529: 526: 523: 520: 517: 514: 511: 508: 505: 502: 499: 496: 493: 490: 487: 484: 481: 478: 475: 472: 469: 466: 463: 460: 457: 454: 451: 448: 445: 442: 439: 436: 433: 430: 427: 424: 421: 418: 415: 412: 409: 406: 403: 400: 397: 394: 391: 388: 385: 382: 379: 376: 373: 370: 367: 364: 361: 358: 301: 298: 295: 292: 283: 256: 253: 250: 247: 244: 241: 238: 216:of the program. 206:bookkeeping code 187:print syndicates 164:concrete classes 123:boilerplate code 114: 107: 103: 100: 94: 92: 51: 27: 19: 1572: 1571: 1567: 1566: 1565: 1563: 1562: 1561: 1537: 1536: 1535: 1534: 1524: 1522: 1514: 1513: 1509: 1500: 1498: 1490: 1489: 1485: 1476: 1474: 1466: 1465: 1461: 1452: 1450: 1441: 1440: 1436: 1419: 1415: 1406: 1404: 1394: 1390: 1375: 1371: 1358: 1357: 1353: 1346:docs.oracle.com 1340: 1339: 1335: 1326: 1324: 1322:Merriam-Webster 1316: 1315: 1311: 1302: 1300: 1292: 1291: 1287: 1272: 1242: 1238: 1233: 1228: 1164: 1159: 1158: 1155: 1152: 1149: 1146: 1143: 1140: 1137: 1134: 1131: 1128: 1125: 1122: 1119: 1116: 1106: 1101: 1100: 1097: 1094: 1091: 1087: 1084: 1081: 1078: 1071: 1059: 1054: 1051: 1048: 1045: 1042: 1039: 1034: 1030: 1026: 1019: 1018: 1015: 1012: 1009: 1006: 1003: 1000: 997: 994: 991: 988: 985: 982: 979: 976: 973: 969: 966: 963: 960: 957: 954: 951: 948: 945: 942: 939: 936: 933: 930: 927: 924: 921: 918: 915: 905: 888: 883: 882: 879: 876: 873: 870: 867: 864: 861: 858: 855: 852: 846: 845: 842: 839: 836: 833: 830: 827: 824: 821: 818: 815: 812: 809: 806: 803: 800: 797: 794: 791: 788: 785: 782: 779: 776: 762: 757: 756: 753: 750: 747: 744: 741: 738: 735: 732: 729: 726: 723: 720: 717: 714: 703: 698: 697: 694: 691: 688: 685: 682: 679: 676: 673: 670: 667: 664: 661: 658: 655: 652: 649: 643:metaprogramming 609: 608: 605: 602: 599: 596: 593: 590: 587: 584: 581: 578: 575: 572: 569: 566: 563: 560: 557: 554: 551: 548: 545: 542: 539: 536: 533: 530: 527: 524: 521: 518: 515: 512: 509: 506: 503: 500: 497: 494: 491: 488: 485: 482: 479: 476: 473: 470: 467: 464: 461: 458: 455: 452: 449: 446: 443: 440: 437: 434: 431: 428: 425: 422: 419: 416: 413: 410: 407: 404: 401: 398: 395: 392: 389: 386: 383: 380: 377: 374: 371: 368: 365: 362: 359: 356: 353: 312: 303: 302: 299: 296: 293: 290: 281: 258: 257: 254: 251: 248: 245: 242: 239: 237:#!/usr/bin/perl 236: 222: 191:printing plates 179: 173: 138:metaprogramming 115: 104: 98: 95: 52: 50: 40: 28: 17: 12: 11: 5: 1570: 1560: 1559: 1554: 1549: 1533: 1532: 1507: 1483: 1459: 1434: 1413: 1388: 1369: 1351: 1333: 1309: 1298:Dictionary.com 1285: 1270: 1235: 1234: 1232: 1229: 1227: 1226: 1220: 1214: 1208: 1202: 1196: 1190: 1184: 1178: 1172: 1165: 1163: 1160: 1115: 1105: 1102: 1077: 931:"en" 914: 904: 901: 887: 884: 851: 775: 761: 758: 713: 702: 699: 648: 355: 352: 349: 311: 308: 289: 235: 221: 218: 210:business logic 172: 169: 158:abstract class 117: 116: 31: 29: 22: 15: 9: 6: 4: 3: 2: 1569: 1558: 1555: 1553: 1550: 1548: 1545: 1544: 1542: 1521: 1517: 1511: 1497: 1493: 1487: 1473: 1469: 1463: 1448: 1444: 1438: 1429: 1424: 1417: 1403: 1399: 1392: 1384: 1380: 1373: 1365: 1361: 1355: 1347: 1343: 1337: 1323: 1319: 1318:"Boilerplate" 1313: 1299: 1295: 1294:"Boilerplate" 1289: 1281: 1277: 1273: 1271:9781581136494 1267: 1263: 1259: 1255: 1251: 1247: 1240: 1236: 1224: 1221: 1218: 1215: 1212: 1209: 1206: 1203: 1200: 1197: 1194: 1191: 1188: 1185: 1182: 1179: 1176: 1173: 1170: 1167: 1166: 1113: 1111: 1075: 1072:<title> 1069: 1065: 1024: 912: 910: 900: 898: 895:translate to 893: 849: 773: 771: 767: 711: 709: 646: 644: 640: 635: 632: 630: 626: 622: 618: 614: 348: 346: 342: 338: 334: 330: 325: 321: 317: 307: 287: 285: 279:boilerplate, 278: 273: 271: 267: 263: 233: 231: 227: 217: 215: 211: 207: 202: 200: 196: 192: 188: 184: 178: 168: 166: 165: 160: 159: 153: 151: 147: 143: 139: 134: 132: 128: 124: 113: 110: 102: 91: 88: 84: 81: 77: 74: 70: 67: 63: 60: –  59: 55: 54:Find sources: 48: 44: 38: 37: 32:This article 30: 26: 21: 20: 1523:. Retrieved 1519: 1510: 1499:. Retrieved 1495: 1486: 1475:. Retrieved 1471: 1462: 1451:. Retrieved 1449:. 2017-05-05 1446: 1437: 1416: 1405:. Retrieved 1401: 1391: 1382: 1372: 1363: 1354: 1345: 1336: 1325:. Retrieved 1321: 1312: 1301:. Retrieved 1297: 1288: 1249: 1239: 1199:Preprocessor 1107: 1035:<body> 1031:<head> 1027:<html> 1020: 906: 889: 847: 763: 704: 636: 633: 620: 616: 610: 344: 340: 336: 333:declarations 313: 304: 274: 259: 223: 205: 203: 180: 162: 156: 154: 142:compile time 135: 130: 126: 125:, or simply 122: 120: 105: 96: 86: 79: 72: 65: 53: 41:Please help 36:verification 33: 1547:Source code 1364:openjdk.org 897:subroutines 127:boilerplate 1541:Categories 1520:www.w3.org 1501:2017-05-05 1477:2017-05-05 1453:2017-05-05 1428:1502.01410 1407:2017-08-02 1327:2018-01-27 1303:2018-01-27 1231:References 770:properties 318:programs, 69:newspapers 1402:DZone.com 613:JavaBeans 183:newspaper 1162:See also 1141:__name__ 1120:__name__ 567:setOwner 540:getOwner 282:#include 243:warnings 220:Preamble 99:May 2017 1525:22 July 1280:9472305 1046:charset 952:charset 892:methods 683:private 671:private 656:@Setter 653:@Getter 495:setName 468:getName 381:private 369:private 266:pragmas 262:shebang 214:aspects 199:fillers 195:boilers 131:verbose 83:scholar 1447:WHATWG 1278:  1268:  1110:Python 1104:Python 1064:Google 1023:WHATWG 874:Person 865:string 856:record 853:public 819:Person 816:public 792:string 789:public 777:public 764:Or in 751:Person 736:String 686:Person 674:String 659:public 627:, the 625:public 573:Person 561:public 549:return 537:Person 534:public 501:String 489:public 477:return 465:String 462:public 411:Person 402:String 393:public 384:Person 372:String 357:public 343:, and 300:#endif 252:strict 226:syntax 171:Origin 85:  78:  71:  64:  56:  1423:arXiv 1276:S2CID 1095:title 1092:</ 1085:title 1060:.html 1010:</ 1001:</ 983:</ 977:title 974:</ 967:title 961:/> 877:Owner 822:Owner 780:class 745:owner 718:class 708:Scala 701:Scala 689:owner 662:class 621:owner 597:owner 591:owner 576:owner 552:owner 453:owner 447:owner 414:owner 387:owner 360:class 345:owner 284:guard 90:JSTOR 76:books 1527:2021 1266:ISBN 1156:pass 1135:pass 1098:> 1090:Test 1088:> 1082:< 1055:> 1043:meta 1040:< 1033:and 1021:The 1016:> 1013:html 1007:> 1004:body 998:> 995:body 992:< 989:> 986:head 980:> 972:Test 970:> 964:< 949:meta 946:< 943:> 940:head 937:< 934:> 925:lang 922:html 919:< 909:HTML 903:HTML 868:Name 795:Name 730:name 715:case 677:name 619:and 617:name 585:this 564:void 525:name 519:name 513:this 504:name 492:void 480:name 441:this 435:name 429:name 423:this 405:name 375:name 351:Java 341:name 329:Java 316:Java 230:Perl 62:news 1258:doi 1254:ACM 1108:In 907:In 859:Pet 834:set 828:get 807:set 801:get 783:Pet 742:var 727:var 721:Pet 665:Pet 396:Pet 363:Pet 337:Pet 335:of 320:DTO 314:In 297:... 249:use 240:use 144:), 45:by 1543:: 1518:. 1494:. 1470:. 1445:. 1400:. 1381:. 1362:. 1344:. 1320:. 1296:. 1274:. 1264:. 1248:. 1144:!= 1138:if 1123:== 1117:if 1029:, 880:); 766:C# 760:C# 645:: 543:() 471:() 347:: 339:, 286:. 272:. 1529:. 1504:. 1480:. 1456:. 1431:. 1425:: 1410:. 1385:. 1366:. 1348:. 1330:. 1306:. 1282:. 1260:: 1150:: 1129:: 1049:= 955:= 928:= 871:, 862:( 843:} 840:} 837:; 831:; 825:{ 813:} 810:; 804:; 798:{ 786:{ 754:) 748:: 739:, 733:: 724:( 695:} 692:; 680:; 668:{ 606:} 603:} 600:; 594:= 588:. 582:{ 579:) 570:( 558:} 555:; 546:{ 531:} 528:; 522:= 516:. 510:{ 507:) 498:( 486:} 483:; 474:{ 459:} 456:; 450:= 444:. 438:; 432:= 426:. 420:{ 417:) 408:, 399:( 390:; 378:; 366:{ 255:; 246:; 112:) 106:( 101:) 97:( 87:· 80:· 73:· 66:· 39:.

Index


verification
improve this article
adding citations to reliable sources
"Boilerplate code"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
metaprogramming
compile time
convention over configuration
model-driven engineering
abstract class
concrete classes
Boilerplate (text)
newspaper
print syndicates
printing plates
boilers
fillers
business logic
aspects
syntax
Perl
shebang
pragmas
programming style

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.