[{"data":1,"prerenderedAt":1089},["ShallowReactive",2],{"guide-code-readability-tips":3},{"id":4,"title":5,"body":6,"date":1081,"description":1082,"extension":1083,"meta":1084,"navigation":178,"path":1085,"readingTime":202,"seo":1086,"stem":1087,"__hash__":1088},"guides\u002Fguides\u002Fcode-readability-tips.md","Code Readability Tips: Write Code That Humans Understand",{"type":7,"value":8,"toc":1057},"minimark",[9,14,18,21,25,28,33,129,133,263,280,284,287,291,307,311,314,549,552,556,559,744,748,751,799,803,856,860,863,867,878,882,885,889,950,953,957,960,1015,1018,1022,1042,1046,1053],[10,11,13],"h2",{"id":12},"why-readability-trumps-cleverness","Why Readability Trumps Cleverness",[15,16,17],"p",{},"Code is read far more often than it is written. A function you compose in ten minutes may be read hundreds of times over its lifetime — by reviewers, by teammates fixing bugs, and by you six months later when you have forgotten the context.",[15,19,20],{},"Clever code that saves five seconds to write but costs five minutes to understand is a net loss. Readable code reduces onboarding time, lowers bug rates, and makes code reviews faster.",[10,22,24],{"id":23},"name-things-to-reveal-intent","Name Things to Reveal Intent",[15,26,27],{},"The single most impactful readability improvement is better names. A good name answers three questions: what does this thing do, what does it contain, and when should you use it?",[29,30,32],"h3",{"id":31},"naming-anti-patterns","Naming Anti-Patterns",[34,35,36,52],"table",{},[37,38,39],"thead",{},[40,41,42,46,49],"tr",{},[43,44,45],"th",{},"Anti-Pattern",[43,47,48],{},"Example",[43,50,51],{},"Problem",[53,54,55,70,83,103,116],"tbody",{},[40,56,57,61,67],{},[58,59,60],"td",{},"Single-letter names",[58,62,63],{},[64,65,66],"code",{},"d",[58,68,69],{},"No context — duration? distance? date?",[40,71,72,75,80],{},[58,73,74],{},"Abbreviations",[58,76,77],{},[64,78,79],{},"usrCfg",[58,81,82],{},"Reader must decode the abbreviation",[40,84,85,88,100],{},[58,86,87],{},"Generic names",[58,89,90,93,94,93,97],{},[64,91,92],{},"data",", ",[64,95,96],{},"info",[64,98,99],{},"tmp",[58,101,102],{},"Tells you nothing about the content",[40,104,105,108,113],{},[58,106,107],{},"Type in name",[58,109,110],{},[64,111,112],{},"nameString",[58,114,115],{},"Redundant with the type system",[40,117,118,121,126],{},[58,119,120],{},"Negated booleans",[58,122,123],{},[64,124,125],{},"isNotValid",[58,127,128],{},"Double negatives in conditions",[29,130,132],{"id":131},"better-alternatives","Better Alternatives",[134,135,140],"pre",{"className":136,"code":137,"language":138,"meta":139,"style":139},"language-javascript shiki shiki-themes github-light github-dark","\u002F\u002F Unclear\nconst d = getTime()\n\n\u002F\u002F Clear\nconst elapsedSeconds = getTime()\n\n\u002F\u002F Unclear\nfunction process(d) { ... }\n\n\u002F\u002F Clear\nfunction formatInvoiceDate(rawTimestamp) { ... }\n","javascript","",[64,141,142,151,173,180,186,200,205,210,234,239,244],{"__ignoreMap":139},[143,144,147],"span",{"class":145,"line":146},"line",1,[143,148,150],{"class":149},"sJ8bj","\u002F\u002F Unclear\n",[143,152,154,158,162,165,169],{"class":145,"line":153},2,[143,155,157],{"class":156},"szBVR","const",[143,159,161],{"class":160},"sj4cs"," d",[143,163,164],{"class":156}," =",[143,166,168],{"class":167},"sScJk"," getTime",[143,170,172],{"class":171},"sVt8B","()\n",[143,174,176],{"class":145,"line":175},3,[143,177,179],{"emptyLinePlaceholder":178},true,"\n",[143,181,183],{"class":145,"line":182},4,[143,184,185],{"class":149},"\u002F\u002F Clear\n",[143,187,189,191,194,196,198],{"class":145,"line":188},5,[143,190,157],{"class":156},[143,192,193],{"class":160}," elapsedSeconds",[143,195,164],{"class":156},[143,197,168],{"class":167},[143,199,172],{"class":171},[143,201,203],{"class":145,"line":202},6,[143,204,179],{"emptyLinePlaceholder":178},[143,206,208],{"class":145,"line":207},7,[143,209,150],{"class":149},[143,211,213,216,219,222,225,228,231],{"class":145,"line":212},8,[143,214,215],{"class":156},"function",[143,217,218],{"class":167}," process",[143,220,221],{"class":171},"(",[143,223,66],{"class":224},"s4XuR",[143,226,227],{"class":171},") { ",[143,229,230],{"class":156},"...",[143,232,233],{"class":171}," }\n",[143,235,237],{"class":145,"line":236},9,[143,238,179],{"emptyLinePlaceholder":178},[143,240,242],{"class":145,"line":241},10,[143,243,185],{"class":149},[143,245,247,249,252,254,257,259,261],{"class":145,"line":246},11,[143,248,215],{"class":156},[143,250,251],{"class":167}," formatInvoiceDate",[143,253,221],{"class":171},[143,255,256],{"class":224},"rawTimestamp",[143,258,227],{"class":171},[143,260,230],{"class":156},[143,262,233],{"class":171},[15,264,265,266,271,272,275,276,279],{},"Naming conventions also matter. Use ",[267,268,270],"a",{"href":269},"\u002Ftools\u002Fcase-converter","camelCase"," for JavaScript variables, ",[64,273,274],{},"snake_case"," for Python, and ",[64,277,278],{},"PascalCase"," for classes and components. Consistency within a codebase is more important than any single style choice.",[10,281,283],{"id":282},"keep-functions-short-and-focused","Keep Functions Short and Focused",[15,285,286],{},"A function should do one thing. If you need the word \"and\" to describe what it does, split it.",[29,288,290],{"id":289},"signs-a-function-does-too-much","Signs a Function Does Too Much",[292,293,294,298,301,304],"ul",{},[295,296,297],"li",{},"It has more than three levels of nesting.",[295,299,300],{},"It takes more than three parameters.",[295,302,303],{},"You struggle to name it without using \"and.\"",[295,305,306],{},"It modifies more than one piece of state.",[29,308,310],{"id":309},"the-extract-method-pattern","The Extract Method Pattern",[15,312,313],{},"When a function grows too long, extract logical blocks into their own functions. Name the new function after what the block does.",[134,315,317],{"className":136,"code":316,"language":138,"meta":139,"style":139},"\u002F\u002F Before — long function with mixed concerns\nfunction handleSubmit(formData) {\n  \u002F\u002F validate\n  if (!formData.email.includes('@')) throw new Error('Invalid email')\n  if (formData.password.length \u003C 8) throw new Error('Short password')\n  \u002F\u002F save\n  const user = await db.users.create(formData)\n  \u002F\u002F notify\n  await email.sendWelcome(user.email)\n  return user\n}\n\n\u002F\u002F After — each step is a named function\nfunction handleSubmit(formData) {\n  validateRegistration(formData)\n  const user = await createUser(formData)\n  await sendWelcomeEmail(user)\n  return user\n}\n",[64,318,319,324,339,344,387,419,424,446,451,465,473,478,483,489,502,510,526,537,544],{"__ignoreMap":139},[143,320,321],{"class":145,"line":146},[143,322,323],{"class":149},"\u002F\u002F Before — long function with mixed concerns\n",[143,325,326,328,331,333,336],{"class":145,"line":153},[143,327,215],{"class":156},[143,329,330],{"class":167}," handleSubmit",[143,332,221],{"class":171},[143,334,335],{"class":224},"formData",[143,337,338],{"class":171},") {\n",[143,340,341],{"class":145,"line":175},[143,342,343],{"class":149},"  \u002F\u002F validate\n",[143,345,346,349,352,355,358,361,363,367,370,373,376,379,381,384],{"class":145,"line":182},[143,347,348],{"class":156},"  if",[143,350,351],{"class":171}," (",[143,353,354],{"class":156},"!",[143,356,357],{"class":171},"formData.email.",[143,359,360],{"class":167},"includes",[143,362,221],{"class":171},[143,364,366],{"class":365},"sZZnC","'@'",[143,368,369],{"class":171},")) ",[143,371,372],{"class":156},"throw",[143,374,375],{"class":156}," new",[143,377,378],{"class":167}," Error",[143,380,221],{"class":171},[143,382,383],{"class":365},"'Invalid email'",[143,385,386],{"class":171},")\n",[143,388,389,391,394,397,400,403,406,408,410,412,414,417],{"class":145,"line":188},[143,390,348],{"class":156},[143,392,393],{"class":171}," (formData.password.",[143,395,396],{"class":160},"length",[143,398,399],{"class":156}," \u003C",[143,401,402],{"class":160}," 8",[143,404,405],{"class":171},") ",[143,407,372],{"class":156},[143,409,375],{"class":156},[143,411,378],{"class":167},[143,413,221],{"class":171},[143,415,416],{"class":365},"'Short password'",[143,418,386],{"class":171},[143,420,421],{"class":145,"line":202},[143,422,423],{"class":149},"  \u002F\u002F save\n",[143,425,426,429,432,434,437,440,443],{"class":145,"line":207},[143,427,428],{"class":156},"  const",[143,430,431],{"class":160}," user",[143,433,164],{"class":156},[143,435,436],{"class":156}," await",[143,438,439],{"class":171}," db.users.",[143,441,442],{"class":167},"create",[143,444,445],{"class":171},"(formData)\n",[143,447,448],{"class":145,"line":212},[143,449,450],{"class":149},"  \u002F\u002F notify\n",[143,452,453,456,459,462],{"class":145,"line":236},[143,454,455],{"class":156},"  await",[143,457,458],{"class":171}," email.",[143,460,461],{"class":167},"sendWelcome",[143,463,464],{"class":171},"(user.email)\n",[143,466,467,470],{"class":145,"line":241},[143,468,469],{"class":156},"  return",[143,471,472],{"class":171}," user\n",[143,474,475],{"class":145,"line":246},[143,476,477],{"class":171},"}\n",[143,479,481],{"class":145,"line":480},12,[143,482,179],{"emptyLinePlaceholder":178},[143,484,486],{"class":145,"line":485},13,[143,487,488],{"class":149},"\u002F\u002F After — each step is a named function\n",[143,490,492,494,496,498,500],{"class":145,"line":491},14,[143,493,215],{"class":156},[143,495,330],{"class":167},[143,497,221],{"class":171},[143,499,335],{"class":224},[143,501,338],{"class":171},[143,503,505,508],{"class":145,"line":504},15,[143,506,507],{"class":167},"  validateRegistration",[143,509,445],{"class":171},[143,511,513,515,517,519,521,524],{"class":145,"line":512},16,[143,514,428],{"class":156},[143,516,431],{"class":160},[143,518,164],{"class":156},[143,520,436],{"class":156},[143,522,523],{"class":167}," createUser",[143,525,445],{"class":171},[143,527,529,531,534],{"class":145,"line":528},17,[143,530,455],{"class":156},[143,532,533],{"class":167}," sendWelcomeEmail",[143,535,536],{"class":171},"(user)\n",[143,538,540,542],{"class":145,"line":539},18,[143,541,469],{"class":156},[143,543,472],{"class":171},[143,545,547],{"class":145,"line":546},19,[143,548,477],{"class":171},[15,550,551],{},"The refactored version reads like a table of contents. Each step is self-documenting.",[10,553,555],{"id":554},"reduce-nesting-with-early-returns","Reduce Nesting with Early Returns",[15,557,558],{},"Deep nesting forces the reader to hold multiple conditions in their head simultaneously. Early returns flatten the structure and put the happy path front and center.",[134,560,562],{"className":136,"code":561,"language":138,"meta":139,"style":139},"\u002F\u002F Nested — reader must track three levels\nfunction getDiscount(user) {\n  if (user) {\n    if (user.isPremium) {\n      if (user.yearsActive > 5) {\n        return 0.25\n      }\n      return 0.15\n    }\n    return 0.05\n  }\n  return 0\n}\n\n\u002F\u002F Flat — each condition is handled immediately\nfunction getDiscount(user) {\n  if (!user) return 0\n  if (!user.isPremium) return 0.05\n  if (user.yearsActive > 5) return 0.25\n  return 0.15\n}\n",[64,563,564,569,583,590,598,614,622,627,635,640,648,653,660,664,668,673,685,701,716,732,739],{"__ignoreMap":139},[143,565,566],{"class":145,"line":146},[143,567,568],{"class":149},"\u002F\u002F Nested — reader must track three levels\n",[143,570,571,573,576,578,581],{"class":145,"line":153},[143,572,215],{"class":156},[143,574,575],{"class":167}," getDiscount",[143,577,221],{"class":171},[143,579,580],{"class":224},"user",[143,582,338],{"class":171},[143,584,585,587],{"class":145,"line":175},[143,586,348],{"class":156},[143,588,589],{"class":171}," (user) {\n",[143,591,592,595],{"class":145,"line":182},[143,593,594],{"class":156},"    if",[143,596,597],{"class":171}," (user.isPremium) {\n",[143,599,600,603,606,609,612],{"class":145,"line":188},[143,601,602],{"class":156},"      if",[143,604,605],{"class":171}," (user.yearsActive ",[143,607,608],{"class":156},">",[143,610,611],{"class":160}," 5",[143,613,338],{"class":171},[143,615,616,619],{"class":145,"line":202},[143,617,618],{"class":156},"        return",[143,620,621],{"class":160}," 0.25\n",[143,623,624],{"class":145,"line":207},[143,625,626],{"class":171},"      }\n",[143,628,629,632],{"class":145,"line":212},[143,630,631],{"class":156},"      return",[143,633,634],{"class":160}," 0.15\n",[143,636,637],{"class":145,"line":236},[143,638,639],{"class":171},"    }\n",[143,641,642,645],{"class":145,"line":241},[143,643,644],{"class":156},"    return",[143,646,647],{"class":160}," 0.05\n",[143,649,650],{"class":145,"line":246},[143,651,652],{"class":171},"  }\n",[143,654,655,657],{"class":145,"line":480},[143,656,469],{"class":156},[143,658,659],{"class":160}," 0\n",[143,661,662],{"class":145,"line":485},[143,663,477],{"class":171},[143,665,666],{"class":145,"line":491},[143,667,179],{"emptyLinePlaceholder":178},[143,669,670],{"class":145,"line":504},[143,671,672],{"class":149},"\u002F\u002F Flat — each condition is handled immediately\n",[143,674,675,677,679,681,683],{"class":145,"line":512},[143,676,215],{"class":156},[143,678,575],{"class":167},[143,680,221],{"class":171},[143,682,580],{"class":224},[143,684,338],{"class":171},[143,686,687,689,691,693,696,699],{"class":145,"line":528},[143,688,348],{"class":156},[143,690,351],{"class":171},[143,692,354],{"class":156},[143,694,695],{"class":171},"user) ",[143,697,698],{"class":156},"return",[143,700,659],{"class":160},[143,702,703,705,707,709,712,714],{"class":145,"line":539},[143,704,348],{"class":156},[143,706,351],{"class":171},[143,708,354],{"class":156},[143,710,711],{"class":171},"user.isPremium) ",[143,713,698],{"class":156},[143,715,647],{"class":160},[143,717,718,720,722,724,726,728,730],{"class":145,"line":546},[143,719,348],{"class":156},[143,721,605],{"class":171},[143,723,608],{"class":156},[143,725,611],{"class":160},[143,727,405],{"class":171},[143,729,698],{"class":156},[143,731,621],{"class":160},[143,733,735,737],{"class":145,"line":734},20,[143,736,469],{"class":156},[143,738,634],{"class":160},[143,740,742],{"class":145,"line":741},21,[143,743,477],{"class":171},[10,745,747],{"id":746},"use-comments-for-why-not-what","Use Comments for \"Why,\" Not \"What\"",[15,749,750],{},"Comments that describe what code does are usually a sign the code is not clear enough. Rewrite the code instead. Comments should explain decisions, trade-offs, and non-obvious constraints.",[134,752,754],{"className":136,"code":753,"language":138,"meta":139,"style":139},"\u002F\u002F Bad — restates the code\n\u002F\u002F Increment i by 1\ni += 1\n\n\u002F\u002F Good — explains the reason\n\u002F\u002F API returns 1-based indices but our array is 0-based\ni += 1\n",[64,755,756,761,766,777,781,786,791],{"__ignoreMap":139},[143,757,758],{"class":145,"line":146},[143,759,760],{"class":149},"\u002F\u002F Bad — restates the code\n",[143,762,763],{"class":145,"line":153},[143,764,765],{"class":149},"\u002F\u002F Increment i by 1\n",[143,767,768,771,774],{"class":145,"line":175},[143,769,770],{"class":171},"i ",[143,772,773],{"class":156},"+=",[143,775,776],{"class":160}," 1\n",[143,778,779],{"class":145,"line":182},[143,780,179],{"emptyLinePlaceholder":178},[143,782,783],{"class":145,"line":188},[143,784,785],{"class":149},"\u002F\u002F Good — explains the reason\n",[143,787,788],{"class":145,"line":202},[143,789,790],{"class":149},"\u002F\u002F API returns 1-based indices but our array is 0-based\n",[143,792,793,795,797],{"class":145,"line":207},[143,794,770],{"class":171},[143,796,773],{"class":156},[143,798,776],{"class":160},[29,800,802],{"id":801},"when-comments-are-valuable","When Comments Are Valuable",[34,804,805,814],{},[37,806,807],{},[40,808,809,812],{},[43,810,811],{},"Situation",[43,813,48],{},[53,815,816,826,836,846],{},[40,817,818,821],{},[58,819,820],{},"Workaround for a vendor bug",[58,822,823],{},[64,824,825],{},"\u002F\u002F Third-party SDK ignores timeout below 100ms",[40,827,828,831],{},[58,829,830],{},"Performance trade-off",[58,832,833],{},[64,834,835],{},"\u002F\u002F Linear search is faster than Set for arrays under 10 items",[40,837,838,841],{},[58,839,840],{},"Business rule reference",[58,842,843],{},[64,844,845],{},"\u002F\u002F Regulation requires 90-day retention (see COMPLIANCE-42)",[40,847,848,851],{},[58,849,850],{},"Non-obvious constant",[58,852,853],{},[64,854,855],{},"\u002F\u002F 0.85 = estimated ratio of active to registered users",[10,857,859],{"id":858},"group-related-code-together","Group Related Code Together",[15,861,862],{},"Organize code so related logic is physically close. A reader should not need to scroll between distant files or functions to understand a single feature.",[29,864,866],{"id":865},"file-organization-tips","File Organization Tips",[292,868,869,872,875],{},[295,870,871],{},"Put types and interfaces near the code that uses them, not in a giant shared types file.",[295,873,874],{},"Group composable imports, reactive state, computed properties, and methods in the same order across all components.",[295,876,877],{},"Keep helper functions in the same file as the component that owns them, until they are reused elsewhere.",[10,879,881],{"id":880},"format-consistently","Format Consistently",[15,883,884],{},"Consistent formatting eliminates visual noise. When half the codebase uses semicolons and the other half does not, every reviewer wastes mental energy on irrelevance.",[29,886,888],{"id":887},"tools-that-solve-formatting-debates","Tools That Solve Formatting Debates",[34,890,891,904],{},[37,892,893],{},[40,894,895,898,901],{},[43,896,897],{},"Tool",[43,899,900],{},"Language",[43,902,903],{},"What It Does",[53,905,906,917,928,939],{},[40,907,908,911,914],{},[58,909,910],{},"Prettier",[58,912,913],{},"JS\u002FTS\u002FCSS\u002FHTML",[58,915,916],{},"Auto-formats on save",[40,918,919,922,925],{},[58,920,921],{},"ESLint",[58,923,924],{},"JS\u002FTS",[58,926,927],{},"Catches style and logic issues",[40,929,930,933,936],{},[58,931,932],{},"Black",[58,934,935],{},"Python",[58,937,938],{},"Opinionated formatter",[40,940,941,944,947],{},[58,942,943],{},"gofmt",[58,945,946],{},"Go",[58,948,949],{},"Built-in standard formatter",[15,951,952],{},"Configure formatters to run on save and in CI. Disallow manual formatting overrides.",[10,954,956],{"id":955},"avoid-magic-numbers-and-strings","Avoid Magic Numbers and Strings",[15,958,959],{},"Raw values scattered through code force the reader to guess their meaning. Replace them with named constants.",[134,961,963],{"className":136,"code":962,"language":138,"meta":139,"style":139},"\u002F\u002F Magic number — what is 86400?\nsetTimeout(refreshToken, 86400)\n\n\u002F\u002F Named constant — immediately clear\nconst SECONDS_PER_DAY = 86400\nsetTimeout(refreshToken, SECONDS_PER_DAY)\n",[64,964,965,970,983,987,992,1004],{"__ignoreMap":139},[143,966,967],{"class":145,"line":146},[143,968,969],{"class":149},"\u002F\u002F Magic number — what is 86400?\n",[143,971,972,975,978,981],{"class":145,"line":153},[143,973,974],{"class":167},"setTimeout",[143,976,977],{"class":171},"(refreshToken, ",[143,979,980],{"class":160},"86400",[143,982,386],{"class":171},[143,984,985],{"class":145,"line":175},[143,986,179],{"emptyLinePlaceholder":178},[143,988,989],{"class":145,"line":182},[143,990,991],{"class":149},"\u002F\u002F Named constant — immediately clear\n",[143,993,994,996,999,1001],{"class":145,"line":188},[143,995,157],{"class":156},[143,997,998],{"class":160}," SECONDS_PER_DAY",[143,1000,164],{"class":156},[143,1002,1003],{"class":160}," 86400\n",[143,1005,1006,1008,1010,1013],{"class":145,"line":202},[143,1007,974],{"class":167},[143,1009,977],{"class":171},[143,1011,1012],{"class":160},"SECONDS_PER_DAY",[143,1014,386],{"class":171},[15,1016,1017],{},"This also makes future changes safer — update the constant in one place instead of hunting for every occurrence.",[10,1019,1021],{"id":1020},"key-takeaways","Key Takeaways",[292,1023,1024,1027,1030,1033,1036,1039],{},[295,1025,1026],{},"Name things to reveal intent — avoid abbreviations, single letters, and generic terms.",[295,1028,1029],{},"Keep functions short, focused, and well-named — extract when you need \"and\" to describe them.",[295,1031,1032],{},"Flatten nesting with early returns so the happy path is obvious.",[295,1034,1035],{},"Comment the \"why,\" not the \"what\" — rewrite unclear code instead of adding comments.",[295,1037,1038],{},"Replace magic numbers and strings with named constants.",[295,1040,1041],{},"Use automated formatters so your team never debates style again.",[10,1043,1045],{"id":1044},"try-it-yourself","Try It Yourself",[15,1047,1048,1049,1052],{},"Need to convert variable names between conventions? Use the ",[267,1050,1051],{"href":269},"Case Converter"," to instantly switch between camelCase, PascalCase, snake_case, and more.",[1054,1055,1056],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":139,"searchDepth":153,"depth":153,"links":1058},[1059,1060,1064,1068,1069,1072,1075,1078,1079,1080],{"id":12,"depth":153,"text":13},{"id":23,"depth":153,"text":24,"children":1061},[1062,1063],{"id":31,"depth":175,"text":32},{"id":131,"depth":175,"text":132},{"id":282,"depth":153,"text":283,"children":1065},[1066,1067],{"id":289,"depth":175,"text":290},{"id":309,"depth":175,"text":310},{"id":554,"depth":153,"text":555},{"id":746,"depth":153,"text":747,"children":1070},[1071],{"id":801,"depth":175,"text":802},{"id":858,"depth":153,"text":859,"children":1073},[1074],{"id":865,"depth":175,"text":866},{"id":880,"depth":153,"text":881,"children":1076},[1077],{"id":887,"depth":175,"text":888},{"id":955,"depth":153,"text":956},{"id":1020,"depth":153,"text":1021},{"id":1044,"depth":153,"text":1045},"2026-05-28","Practical techniques to write readable code — from naming and structure to formatting and comments — that help your team move faster.","md",{"immutable":178},"\u002Fguides\u002Fcode-readability-tips",{"title":5,"description":1082},"guides\u002Fcode-readability-tips","h2vqODiFokBH-93-_0hnNdVpTSiwb3MkY1T0mNcKG6Q",1780401326939]