{"id":27097,"date":"2025-04-16T10:39:22","date_gmt":"2025-04-16T03:39:22","guid":{"rendered":"https:\/\/interdata.vn\/blog\/?p=27097"},"modified":"2025-07-02T14:04:18","modified_gmt":"2025-07-02T07:04:18","slug":"hang-so-la-gi","status":"publish","type":"post","link":"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/","title":{"rendered":"H\u1eb1ng S\u1ed1 L\u00e0 G\u00ec? Gi\u1ea3i Th\u00edch Constant Trong L\u1eadp Tr\u00ecnh (K\u00e8m V\u00ed D\u1ee5)"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-white ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">N\u1ed8I DUNG<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Hang-so-Constant-la-gi\" >H\u1eb1ng s\u1ed1 (Constant) l\u00e0 g\u00ec?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Tai-sao-nen-su-dung-Hang-so-Loi-ich-chinh-khi-lap-trinh\" >T\u1ea1i sao n\u00ean s\u1eed d\u1ee5ng H\u1eb1ng s\u1ed1? L\u1ee3i \u00edch ch\u00ednh khi l\u1eadp tr\u00ecnh<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Giup-Code-de-doc-va-de-hieu-hon-Readability\" >Gi\u00fap Code d\u1ec5 \u0111\u1ecdc v\u00e0 d\u1ec5 hi\u1ec3u h\u01a1n (Readability)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Tang-kha-nang-bao-tri-Code-Maintainability\" >T\u0103ng kh\u1ea3 n\u0103ng b\u1ea3o tr\u00ec Code (Maintainability)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Tranh-loi-logic-do-thay-doi-gia-tri-khong-mong-muon\" >Tr\u00e1nh l\u1ed7i logic do thay \u0111\u1ed5i gi\u00e1 tr\u1ecb kh\u00f4ng mong mu\u1ed1n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Toi-uu-hoa-Trong-mot-so-truong-hop\" >T\u1ed1i \u01b0u h\u00f3a (Trong m\u1ed9t s\u1ed1 tr\u01b0\u1eddng h\u1ee3p)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Cach-khai-bao-Hang-so-Cu-phap-va-Vi-du\" >C\u00e1ch khai b\u00e1o H\u1eb1ng s\u1ed1: C\u00fa ph\u00e1p v\u00e0 V\u00ed d\u1ee5<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Cu-phap-khai-bao-chung-Syntax\" >C\u00fa ph\u00e1p khai b\u00e1o chung (Syntax)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Khai-bao-Hang-so-trong-JavaScript-voi-const\" >Khai b\u00e1o H\u1eb1ng s\u1ed1 trong JavaScript (v\u1edbi const)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Khai-bao-Hang-so-trong-Python-Quy-uoc-dat-ten\" >Khai b\u00e1o H\u1eb1ng s\u1ed1 trong Python (Quy \u01b0\u1edbc \u0111\u1eb7t t\u00ean)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Khai-bao-Hang-so-trong-Java-voi-final\" >Khai b\u00e1o H\u1eb1ng s\u1ed1 trong Java (v\u1edbi final)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Khai-bao-Hang-so-trong-CC-voi-const-va-define\" >Khai b\u00e1o H\u1eb1ng s\u1ed1 trong C\/C++ (v\u1edbi const v\u00e0 #define)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#So-sanh-chi-tiet-Hang-so-va-Bien-so-Constant-vs-Variable\" >So s\u00e1nh chi ti\u1ebft: H\u1eb1ng s\u1ed1 v\u00e0 Bi\u1ebfn s\u1ed1 (Constant vs Variable)<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Diem-khac-biet-cot-loi-Tinh-thay-doi-gia-tri\" >\u0110i\u1ec3m kh\u00e1c bi\u1ec7t c\u1ed1t l\u00f5i: T\u00ednh thay \u0111\u1ed5i gi\u00e1 tr\u1ecb<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Muc-dich-su-dung\" >M\u1ee5c \u0111\u00edch s\u1eed d\u1ee5ng<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Cu-phap-khai-bao\" >C\u00fa ph\u00e1p khai b\u00e1o<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Bang-tom-tat-so-sanh-nhanh\" >B\u1ea3ng t\u00f3m t\u1eaft so s\u00e1nh nhanh<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Cac-loai-Hang-so-thuong-gap-trong-lap-trinh\" >C\u00e1c lo\u1ea1i H\u1eb1ng s\u1ed1 th\u01b0\u1eddng g\u1eb7p trong l\u1eadp tr\u00ecnh<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Hang-so-Nguyen-van-Literal-Constants\" >H\u1eb1ng s\u1ed1 Nguy\u00ean v\u0103n (Literal Constants)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Hang-so-Ky-hieu-Symbolic-Constants\" >H\u1eb1ng s\u1ed1 K\u00fd hi\u1ec7u (Symbolic Constants)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Mot-so-luu-y-va-Quy-uoc-khi-su-dung-Hang-so\" >M\u1ed9t s\u1ed1 l\u01b0u \u00fd v\u00e0 Quy \u01b0\u1edbc khi s\u1eed d\u1ee5ng H\u1eb1ng s\u1ed1<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Quy-uoc-dat-ten-Naming-Convention\" >Quy \u01b0\u1edbc \u0111\u1eb7t t\u00ean (Naming Convention)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Khi-nao-nen-dung-Hang-so-thay-vi-Bien-so\" >Khi n\u00e0o n\u00ean d\u00f9ng H\u1eb1ng s\u1ed1 thay v\u00ec Bi\u1ebfn s\u1ed1?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Tranh-%E2%80%9CMagic-Numbers%E2%80%9D-%E2%80%9CMagic-Strings%E2%80%9D\" >Tr\u00e1nh &#8220;Magic Numbers&#8221; \/ &#8220;Magic Strings&#8221;<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Ket-luan-Tam-quan-trong-cua-Hang-so\" >K\u1ebft lu\u1eadn: T\u1ea7m quan tr\u1ecdng c\u1ee7a H\u1eb1ng s\u1ed1<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Cau-hoi-thuong-gap-ve-Hang-so-FAQ\" >C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 H\u1eb1ng s\u1ed1 (FAQ)<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Hang-so-co-bat-buoc-phai-viet-hoa-khong\" >H\u1eb1ng s\u1ed1 c\u00f3 b\u1eaft bu\u1ed9c ph\u1ea3i vi\u1ebft hoa kh\u00f4ng?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Gia-tri-cua-hang-so-duoc-luu-o-dau-trong-bo-nho\" >Gi\u00e1 tr\u1ecb c\u1ee7a h\u1eb1ng s\u1ed1 \u0111\u01b0\u1ee3c l\u01b0u \u1edf \u0111\u00e2u trong b\u1ed9 nh\u1edb?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#const-trong-JavaScript-va-final-trong-Java-khac-nhau-khong\" >const trong JavaScript v\u00e0 final trong Java kh\u00e1c nhau kh\u00f4ng?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/#Co-the-tao-hang-so-la-mot-doi-tuong-object-khong\" >C\u00f3 th\u1ec3 t\u1ea1o h\u1eb1ng s\u1ed1 l\u00e0 m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng (object) kh\u00f4ng?<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n<p>B\u1ea1n m\u1edbi h\u1ecdc l\u1eadp tr\u00ecnh v\u00e0 th\u1eafc m\u1eafc &#8220;h\u1eb1ng s\u1ed1 l\u00e0 g\u00ec&#8221; hay &#8220;constant&#8221; ngh\u0129a l\u00e0 sao? B\u00e0i vi\u1ebft n\u00e0y s\u1ebd gi\u1ea3i \u0111\u00e1p c\u1eb7n k\u1ebd! Ch\u00fang ta s\u1ebd c\u00f9ng t\u00ecm hi\u1ec3u \u0111\u1ecbnh ngh\u0129a h\u1eb1ng s\u1ed1, l\u00fd do v\u00ec sao n\u00ean d\u00f9ng ch\u00fang \u0111\u1ec3 code t\u1ed1t h\u01a1n, v\u00e0 c\u00e1ch khai b\u00e1o trong c\u00e1c ng\u00f4n ng\u1eef ph\u1ed5 bi\u1ebfn nh\u01b0 JS, Python, Java, C++. B\u00ean c\u1ea1nh \u0111\u00f3 l\u00e0 so s\u00e1nh r\u00f5 r\u00e0ng v\u1edbi bi\u1ebfn s\u1ed1 v\u00e0 c\u00e1c m\u1eb9o s\u1eed d\u1ee5ng hi\u1ec7u qu\u1ea3.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Hang-so-Constant-la-gi\"><\/span>H\u1eb1ng s\u1ed1 (Constant) l\u00e0 g\u00ec?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a href=\"https:\/\/interdata.vn\/blog\/hang-so-la-gi\/\">H\u1eb1ng s\u1ed1 (constant)<\/a> trong l\u1eadp tr\u00ecnh l\u00e0 m\u1ed9t t\u00ean \u0111\u1ecbnh danh \u0111\u1ea1i di\u1ec7n cho m\u1ed9t gi\u00e1 tr\u1ecb c\u1ed1 \u0111\u1ecbnh, kh\u00f4ng th\u1ec3 thay \u0111\u1ed5i trong su\u1ed1t qu\u00e1 tr\u00ecnh th\u1ef1c thi ch\u01b0\u01a1ng tr\u00ecnh. M\u1ed9t khi gi\u00e1 tr\u1ecb \u0111\u00e3 \u0111\u01b0\u1ee3c g\u00e1n cho h\u1eb1ng s\u1ed1 l\u00fac khai b\u00e1o, b\u1ea1n kh\u00f4ng th\u1ec3 g\u00e1n l\u1ea1i gi\u00e1 tr\u1ecb kh\u00e1c cho n\u00f3.<\/p>\n<p>\u0110\u1eb7c t\u00ednh quan tr\u1ecdng nh\u1ea5t c\u1ee7a h\u1eb1ng s\u1ed1 l\u00e0 t\u00ednh b\u1ea5t bi\u1ebfn (immutable), ngh\u0129a l\u00e0 gi\u00e1 tr\u1ecb c\u1ee7a n\u00f3 lu\u00f4n \u0111\u01b0\u1ee3c gi\u1eef nguy\u00ean. \u0110i\u1ec1u n\u00e0y gi\u00fap \u0111\u1ea3m b\u1ea3o r\u1eb1ng c\u00e1c gi\u00e1 tr\u1ecb quan tr\u1ecdng, kh\u00f4ng n\u00ean b\u1ecb s\u1eeda \u0111\u1ed5i (v\u00ed d\u1ee5: s\u1ed1 PI, s\u1ed1 ng\u00e0y trong tu\u1ea7n) s\u1ebd lu\u00f4n ch\u00ednh x\u00e1c v\u00e0 nh\u1ea5t qu\u00e1n.<\/p>\n<p>Ng\u01b0\u1ee3c l\u1ea1i v\u1edbi h\u1eb1ng s\u1ed1 l\u00e0 bi\u1ebfn s\u1ed1 (variable). Bi\u1ebfn s\u1ed1 c\u0169ng l\u00e0 m\u1ed9t t\u00ean \u0111\u1ecbnh danh d\u00f9ng \u0111\u1ec3 l\u01b0u tr\u1eef d\u1eef li\u1ec7u, nh\u01b0ng gi\u00e1 tr\u1ecb c\u1ee7a bi\u1ebfn s\u1ed1 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c thay \u0111\u1ed5i nhi\u1ec1u l\u1ea7n trong ch\u01b0\u01a1ng tr\u00ecnh. Vi\u1ec7c ph\u00e2n bi\u1ec7t r\u00f5 r\u00e0ng gi\u1eefa h\u1eb1ng s\u1ed1 v\u00e0 bi\u1ebfn s\u1ed1 r\u1ea5t quan tr\u1ecdng khi vi\u1ebft m\u00e3.<\/p>\n<p>H\u00e3y t\u01b0\u1edfng t\u01b0\u1ee3ng b\u1ea1n \u0111ang vi\u1ebft ch\u01b0\u01a1ng tr\u00ecnh t\u00ednh to\u00e1n li\u00ean quan \u0111\u1ebfn s\u1ed1 Pi (\u03c0). B\u1ea1n c\u00f3 th\u1ec3 khai b\u00e1o Pi l\u00e0 m\u1ed9t h\u1eb1ng s\u1ed1 v\u1edbi gi\u00e1 tr\u1ecb x\u1ea5p x\u1ec9 3.14159. \u0110i\u1ec1u n\u00e0y \u0111\u1ea3m b\u1ea3o r\u1eb1ng m\u1ecdi t\u00ednh to\u00e1n s\u1eed d\u1ee5ng Pi \u0111\u1ec1u d\u00f9ng c\u00f9ng m\u1ed9t gi\u00e1 tr\u1ecb chu\u1ea9n, tr\u00e1nh nh\u1ea7m l\u1eabn ho\u1eb7c thay \u0111\u1ed5i kh\u00f4ng mong mu\u1ed1n.<\/p>\n<p>Vi\u1ec7c s\u1eed d\u1ee5ng h\u1eb1ng s\u1ed1 l\u00e0m cho m\u00e3 ngu\u1ed3n c\u1ee7a b\u1ea1n tr\u1edf n\u00ean d\u1ec5 \u0111\u1ecdc v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n. Khi \u0111\u1ecdc code, ng\u01b0\u1eddi kh\u00e1c (ho\u1eb7c ch\u00ednh b\u1ea1n sau n\u00e0y) s\u1ebd hi\u1ec3u ngay r\u1eb1ng \u0111\u00e2y l\u00e0 m\u1ed9t gi\u00e1 tr\u1ecb c\u1ed1 \u0111\u1ecbnh, kh\u00f4ng c\u1ea7n lo l\u1eafng v\u1ec1 vi\u1ec7c n\u00f3 c\u00f3 th\u1ec3 b\u1ecb thay \u0111\u1ed5i \u1edf \u0111\u00e2u \u0111\u00f3.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Hang-so-la-gi.jpg\" alt=\"H\u1eb1ng s\u1ed1 l\u00e0 g\u00ec\" width=\"750\" height=\"500\" class=\"aligncenter size-full wp-image-27107\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Hang-so-la-gi.jpg 750w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Hang-so-la-gi-300x200.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Tai-sao-nen-su-dung-Hang-so-Loi-ich-chinh-khi-lap-trinh\"><\/span>T\u1ea1i sao n\u00ean s\u1eed d\u1ee5ng H\u1eb1ng s\u1ed1? L\u1ee3i \u00edch ch\u00ednh khi l\u1eadp tr\u00ecnh<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>S\u1eed d\u1ee5ng h\u1eb1ng s\u1ed1 kh\u00f4ng ch\u1ec9 l\u00e0 m\u1ed9t l\u1ef1a ch\u1ecdn, m\u00e0 c\u00f2n l\u00e0 m\u1ed9t <strong>th\u1ef1c h\u00e0nh t\u1ed1t (best practice)<\/strong> trong l\u1eadp tr\u00ecnh. Vi\u1ec7c n\u00e0y mang l\u1ea1i nhi\u1ec1u l\u1ee3i \u00edch thi\u1ebft th\u1ef1c, gi\u00fap m\u00e3 ngu\u1ed3n c\u1ee7a b\u1ea1n tr\u1edf n\u00ean t\u1ed1t h\u01a1n \u0111\u00e1ng k\u1ec3. V\u1eady c\u1ee5 th\u1ec3, t\u1ea1i sao ch\u00fang ta n\u00ean \u01b0u ti\u00ean d\u00f9ng h\u1eb1ng s\u1ed1?<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Giup-Code-de-doc-va-de-hieu-hon-Readability\"><\/span>Gi\u00fap Code d\u1ec5 \u0111\u1ecdc v\u00e0 d\u1ec5 hi\u1ec3u h\u01a1n (Readability)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>H\u1eb1ng s\u1ed1 gi\u00fap m\u00e3 ngu\u1ed3n t\u1ef1 gi\u1ea3i th\u00edch (self-documenting). Thay v\u00ec s\u1eed d\u1ee5ng c\u00e1c con s\u1ed1 ho\u1eb7c chu\u1ed7i k\u00fd t\u1ef1 &#8220;ma thu\u1eadt&#8221; (magic numbers\/strings) kh\u00f4ng r\u00f5 \u00fd ngh\u0129a, b\u1ea1n d\u00f9ng m\u1ed9t c\u00e1i t\u00ean g\u1ee3i nh\u1edb. \u0110i\u1ec1u n\u00e0y l\u00e0m code s\u00e1ng s\u1ee7a v\u00e0 d\u1ec5 hi\u1ec3u h\u01a1n r\u1ea5t nhi\u1ec1u.<\/p>\n<p>H\u00e3y xem x\u00e9t v\u00ed d\u1ee5 sau, t\u00ednh gi\u00e1 cu\u1ed1i c\u00f9ng sau khi \u00e1p d\u1ee5ng thu\u1ebf su\u1ea5t 10%:<\/p>\n<ul>\n<li><i>Kh\u00f4ng d\u00f9ng h\u1eb1ng s\u1ed1:<\/i>\n<pre><code class=\"language-plaintext\">  let finalPrice = originalPrice + originalPrice * 0.1;\r\n  \/\/ S\u1ed1 0.1 n\u00e0y c\u00f3 \u00fd ngh\u0129a g\u00ec? L\u00e0 thu\u1ebf? L\u00e0 gi\u1ea3m gi\u00e1?\r\n<\/code><\/pre>\n<\/li>\n<li><i>D\u00f9ng h\u1eb1ng s\u1ed1:<\/i>\n<pre><code class=\"language-plaintext\">  const TAX_RATE = 0.1; \/\/ R\u00f5 r\u00e0ng \u0111\u00e2y l\u00e0 thu\u1ebf su\u1ea5t\r\n  let finalPrice = originalPrice + originalPrice * TAX_RATE;\r\n<\/code><\/pre>\n<\/li>\n<\/ul>\n<p>R\u00f5 r\u00e0ng, phi\u00ean b\u1ea3n d\u00f9ng h\u1eb1ng s\u1ed1 <code>TAX_RATE<\/code> d\u1ec5 \u0111\u1ecdc v\u00e0 d\u1ec5 hi\u1ec3u h\u01a1n h\u1eb3n. Ng\u01b0\u1eddi \u0111\u1ecdc code (k\u1ec3 c\u1ea3 ch\u00ednh b\u1ea1n sau n\u00e0y) c\u00f3 th\u1ec3 n\u1eafm b\u1eaft ngay \u00fd ngh\u0129a c\u1ee7a gi\u00e1 tr\u1ecb 0.1 m\u00e0 kh\u00f4ng c\u1ea7n ph\u1ea3i suy \u0111o\u00e1n.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Tang-kha-nang-bao-tri-Code-Maintainability\"><\/span>T\u0103ng kh\u1ea3 n\u0103ng b\u1ea3o tr\u00ec Code (Maintainability)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Khi m\u1ed9t gi\u00e1 tr\u1ecb c\u1ed1 \u0111\u1ecbnh \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u1edf nhi\u1ec1u n\u01a1i trong ch\u01b0\u01a1ng tr\u00ecnh, vi\u1ec7c d\u00f9ng h\u1eb1ng s\u1ed1 gi\u00fap vi\u1ec7c c\u1eadp nh\u1eadt tr\u1edf n\u00ean c\u1ef1c k\u1ef3 \u0111\u01a1n gi\u1ea3n. B\u1ea1n ch\u1ec9 c\u1ea7n thay \u0111\u1ed5i gi\u00e1 tr\u1ecb t\u1ea1i m\u1ed9t n\u01a1i duy nh\u1ea5t \u2013 n\u01a1i khai b\u00e1o h\u1eb1ng s\u1ed1.<\/p>\n<p>T\u01b0\u1edfng t\u01b0\u1ee3ng b\u1ea1n c\u00f3 m\u1ed9t website b\u00e1n h\u00e0ng v\u00e0 thu\u1ebf su\u1ea5t VAT (hi\u1ec7n l\u00e0 10%) \u0111\u01b0\u1ee3c d\u00f9ng \u0111\u1ec3 t\u00ednh gi\u00e1 \u1edf trang s\u1ea3n ph\u1ea9m, gi\u1ecf h\u00e0ng, v\u00e0 trang thanh to\u00e1n. N\u1ebfu kh\u00f4ng d\u00f9ng h\u1eb1ng s\u1ed1, khi thu\u1ebf su\u1ea5t thay \u0111\u1ed5i (v\u00ed d\u1ee5 l\u00ean 8%), b\u1ea1n ph\u1ea3i t\u00ecm v\u00e0 s\u1eeda gi\u00e1 tr\u1ecb 0.1 \u1edf t\u1ea5t c\u1ea3 c\u00e1c n\u01a1i \u0111\u00f3.<\/p>\n<p>Nh\u01b0ng n\u1ebfu b\u1ea1n \u0111\u00e3 khai b\u00e1o <code>const VAT_RATE = 0.1;<\/code> \u1edf m\u1ed9t n\u01a1i t\u1eadp trung, b\u1ea1n ch\u1ec9 c\u1ea7n s\u1eeda th\u00e0nh <code>const VAT_RATE = 0.08;<\/code>. M\u1ecdi n\u01a1i s\u1eed d\u1ee5ng h\u1eb1ng s\u1ed1 n\u00e0y s\u1ebd t\u1ef1 \u0111\u1ed9ng c\u1eadp nh\u1eadt theo gi\u00e1 tr\u1ecb m\u1edbi. \u0110i\u1ec1u n\u00e0y ti\u1ebft ki\u1ec7m th\u1eddi gian v\u00e0 gi\u1ea3m thi\u1ec3u nguy c\u01a1 b\u1ecf s\u00f3t.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Tranh-loi-logic-do-thay-doi-gia-tri-khong-mong-muon\"><\/span>Tr\u00e1nh l\u1ed7i logic do thay \u0111\u1ed5i gi\u00e1 tr\u1ecb kh\u00f4ng mong mu\u1ed1n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>T\u00ednh b\u1ea5t bi\u1ebfn c\u1ee7a h\u1eb1ng s\u1ed1 l\u00e0 m\u1ed9t c\u01a1 ch\u1ebf b\u1ea3o v\u1ec7 tuy\u1ec7t v\u1eddi. N\u00f3 ng\u0103n ch\u1eb7n vi\u1ec7c b\u1ea1n ho\u1eb7c ng\u01b0\u1eddi kh\u00e1c v\u00f4 t\u00ecnh g\u00e1n l\u1ea1i gi\u00e1 tr\u1ecb cho m\u1ed9t \u0111\u1ea1i l\u01b0\u1ee3ng v\u1ed1n d\u0129 kh\u00f4ng n\u00ean thay \u0111\u1ed5i. \u0110i\u1ec1u n\u00e0y gi\u00fap lo\u1ea1i b\u1ecf m\u1ed9t ngu\u1ed3n g\u00e2y l\u1ed7i ti\u1ec1m \u1ea9n trong ch\u01b0\u01a1ng tr\u00ecnh.<\/p>\n<p>V\u00ed d\u1ee5, b\u1ea1n \u0111\u1ecbnh ngh\u0129a s\u1ed1 l\u01b0\u1ee3ng t\u1ed1i \u0111a ng\u01b0\u1eddi d\u00f9ng \u0111\u01b0\u1ee3c ph\u00e9p \u0111\u0103ng k\u00fd l\u00e0 1000. N\u1ebfu d\u00f9ng bi\u1ebfn <code>let maxUsers = 1000;<\/code>, c\u00f3 th\u1ec3 \u1edf m\u1ed9t \u0111o\u1ea1n code n\u00e0o \u0111\u00f3 sau n\u00e0y, b\u1ea1n v\u00f4 t\u00ecnh vi\u1ebft <code>maxUsers = 10;<\/code>. L\u1ed7i n\u00e0y c\u00f3 th\u1ec3 kh\u00f3 ph\u00e1t hi\u1ec7n v\u00e0 g\u00e2y ra h\u1eadu qu\u1ea3 nghi\u00eam tr\u1ecdng.<\/p>\n<p>Nh\u01b0ng n\u1ebfu b\u1ea1n khai b\u00e1o <code>const MAX_USERS = 1000;<\/code>, m\u1ecdi c\u1ed1 g\u1eafng g\u00e1n l\u1ea1i gi\u00e1 tr\u1ecb cho <code>MAX_USERS<\/code> (v\u00ed d\u1ee5: <code>MAX_USERS = 10;<\/code>) s\u1ebd b\u1ecb tr\u00ecnh th\u00f4ng d\u1ecbch ho\u1eb7c tr\u00ecnh bi\u00ean d\u1ecbch b\u00e1o l\u1ed7i ngay l\u1eadp t\u1ee9c. B\u1ea1n s\u1ebd ph\u00e1t hi\u1ec7n v\u00e0 s\u1eeda l\u1ed7i d\u1ec5 d\u00e0ng h\u01a1n nhi\u1ec1u.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Toi-uu-hoa-Trong-mot-so-truong-hop\"><\/span>T\u1ed1i \u01b0u h\u00f3a (Trong m\u1ed9t s\u1ed1 tr\u01b0\u1eddng h\u1ee3p)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>M\u1eb7c d\u00f9 kh\u00f4ng ph\u1ea3i l\u00e0 l\u1ee3i \u00edch ch\u00ednh, nh\u01b0ng \u0111\u00f4i khi tr\u00ecnh bi\u00ean d\u1ecbch (compiler) c\u00f3 th\u1ec3 th\u1ef1c hi\u1ec7n m\u1ed9t s\u1ed1 t\u1ed1i \u01b0u h\u00f3a v\u1edbi h\u1eb1ng s\u1ed1. V\u00ec bi\u1ebft gi\u00e1 tr\u1ecb c\u1ee7a h\u1eb1ng s\u1ed1 kh\u00f4ng bao gi\u1edd thay \u0111\u1ed5i, tr\u00ecnh bi\u00ean d\u1ecbch c\u00f3 th\u1ec3 thay th\u1ebf tr\u1ef1c ti\u1ebfp t\u00ean h\u1eb1ng s\u1ed1 b\u1eb1ng gi\u00e1 tr\u1ecb c\u1ee7a n\u00f3 trong m\u00e3 m\u00e1y (inline substitution).<\/p>\n<p>Tuy nhi\u00ean, b\u1ea1n n\u00ean t\u1eadp trung v\u00e0o c\u00e1c l\u1ee3i \u00edch v\u1ec1 readability v\u00e0 maintainability khi quy\u1ebft \u0111\u1ecbnh s\u1eed d\u1ee5ng h\u1eb1ng s\u1ed1. T\u1ed1i \u01b0u h\u00f3a th\u01b0\u1eddng l\u00e0 hi\u1ec7u \u1ee9ng ph\u1ee5 v\u00e0 m\u1ee9c \u0111\u1ed9 \u1ea3nh h\u01b0\u1edfng c\u00f2n t\u00f9y thu\u1ed9c v\u00e0o ng\u00f4n ng\u1eef v\u00e0 tr\u00ecnh bi\u00ean d\u1ecbch c\u1ee5 th\u1ec3.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Cach-khai-bao-Hang-so-Cu-phap-va-Vi-du\"><\/span>C\u00e1ch khai b\u00e1o H\u1eb1ng s\u1ed1: C\u00fa ph\u00e1p v\u00e0 V\u00ed d\u1ee5<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>C\u00e1ch khai b\u00e1o h\u1eb1ng s\u1ed1 c\u00f3 th\u1ec3 kh\u00e1c nhau \u0111\u00f4i ch\u00fat t\u00f9y thu\u1ed9c v\u00e0o <strong>ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh (programming language)<\/strong> b\u1ea1n \u0111ang s\u1eed d\u1ee5ng. Tuy nhi\u00ean, \u00fd t\u01b0\u1edfng chung v\u1eabn l\u00e0 s\u1eed d\u1ee5ng m\u1ed9t t\u1eeb kh\u00f3a \u0111\u1eb7c bi\u1ec7t \u0111\u1ec3 b\u00e1o hi\u1ec7u r\u1eb1ng gi\u00e1 tr\u1ecb n\u00e0y s\u1ebd kh\u00f4ng \u0111\u1ed5i.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Cu-phap-khai-bao-chung-Syntax\"><\/span>C\u00fa ph\u00e1p khai b\u00e1o chung (Syntax)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>H\u1ea7u h\u1ebft c\u00e1c ng\u00f4n ng\u1eef h\u1ed7 tr\u1ee3 h\u1eb1ng s\u1ed1 \u0111\u1ec1u c\u00f3 c\u00fa ph\u00e1p khai b\u00e1o t\u01b0\u01a1ng t\u1ef1 nh\u01b0 sau:<\/p>\n<p><code>keyword CONSTANT_NAME = value;<\/code><\/p>\n<p>Trong \u0111\u00f3:<\/p>\n<ul>\n<li><code>keyword<\/code>: T\u1eeb kh\u00f3a \u0111\u1eb7c bi\u1ec7t c\u1ee7a ng\u00f4n ng\u1eef \u0111\u1ec3 khai b\u00e1o h\u1eb1ng s\u1ed1 (v\u00ed d\u1ee5: <code>const<\/code>, <code>final<\/code>).<\/li>\n<li><code>CONSTANT_NAME<\/code>: T\u00ean b\u1ea1n \u0111\u1eb7t cho h\u1eb1ng s\u1ed1 (th\u01b0\u1eddng theo quy \u01b0\u1edbc vi\u1ebft hoa).<\/li>\n<li><code>=<\/code>: To\u00e1n t\u1eed g\u00e1n.<\/li>\n<li><code>value<\/code>: Gi\u00e1 tr\u1ecb c\u1ed1 \u0111\u1ecbnh b\u1ea1n mu\u1ed1n g\u00e1n cho h\u1eb1ng s\u1ed1.<\/li>\n<li><code>;<\/code>: D\u1ea5u k\u1ebft th\u00fac c\u00e2u l\u1ec7nh (trong nhi\u1ec1u ng\u00f4n ng\u1eef).<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Khai-bao-Hang-so-trong-JavaScript-voi-const\"><\/span>Khai b\u00e1o H\u1eb1ng s\u1ed1 trong JavaScript (v\u1edbi <code>const<\/code>)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Trong JavaScript (ES6 tr\u1edf l\u00ean), b\u1ea1n s\u1eed d\u1ee5ng t\u1eeb kh\u00f3a <code>const<\/code> \u0111\u1ec3 khai b\u00e1o h\u1eb1ng s\u1ed1. H\u1eb1ng s\u1ed1 khai b\u00e1o b\u1eb1ng <code>const<\/code> ph\u1ea3i \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o gi\u00e1 tr\u1ecb ngay l\u1eadp t\u1ee9c v\u00e0 kh\u00f4ng th\u1ec3 g\u00e1n l\u1ea1i.<\/p>\n<p>&#8220;`javascript \/\/ Khai b\u00e1o h\u1eb1ng s\u1ed1 ki\u1ec3u s\u1ed1 const PI = 3.14159; const MAX_LOGIN_ATTEMPTS = 5;<\/p>\n<p>\/\/ Khai b\u00e1o h\u1eb1ng s\u1ed1 ki\u1ec3u chu\u1ed7i const GREETING_MESSAGE = &#8220;Ch\u00e0o m\u1eebng b\u1ea1n \u0111\u1ebfn v\u1edbi website!&#8221;; const API_ENDPOINT = &#8220;https:\/\/api.example.com\/v1&#8221;;<\/p>\n<p>\/\/ C\u1ed1 g\u1eafng g\u00e1n l\u1ea1i gi\u00e1 tr\u1ecb s\u1ebd g\u00e2y l\u1ed7i \/\/ PI = 3.14; \/\/ L\u1ed7i: TypeError: Assignment to constant variable.<\/p>\n<p>console.log(PI); \/\/ Output: 3.14159 console.log(GREETING_MESSAGE); \/\/ Output: Ch\u00e0o m\u1eebng b\u1ea1n \u0111\u1ebfn v\u1edbi website!<\/p>\n<p>M\u1ed9t l\u01b0u \u00fd quan tr\u1ecdng v\u1edbi <code>const<\/code> trong JavaScript: khi h\u1eb1ng s\u1ed1 l\u00e0 m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng (object) ho\u1eb7c m\u1ea3ng (array), b\u1ea3n th\u00e2n tham chi\u1ebfu \u0111\u1ebfn \u0111\u1ed1i t\u01b0\u1ee3ng\/m\u1ea3ng \u0111\u00f3 l\u00e0 b\u1ea5t bi\u1ebfn, nh\u01b0ng n\u1ed9i dung b\u00ean trong \u0111\u1ed1i t\u01b0\u1ee3ng\/m\u1ea3ng th\u00ec <i>v\u1eabn c\u00f3 th\u1ec3 thay \u0111\u1ed5i<\/i>.<\/p>\n<pre><code class=\"language-plaintext\">const USER_SETTINGS = {\r\n  theme: \"dark\",\r\n  notifications: true\r\n};\r\n\r\n\/\/ L\u1ed7i n\u1ebfu g\u00e1n l\u1ea1i c\u1ea3 \u0111\u1ed1i t\u01b0\u1ee3ng\r\n\/\/ USER_SETTINGS = { theme: \"light\" }; \/\/ TypeError\r\n\r\n\/\/ Nh\u01b0ng c\u00f3 th\u1ec3 thay \u0111\u1ed5i thu\u1ed9c t\u00ednh b\u00ean trong\r\nUSER_SETTINGS.theme = \"light\"; \/\/ Ho\u00e0n to\u00e0n h\u1ee3p l\u1ec7\r\nUSER_SETTINGS.notifications = false; \/\/ H\u1ee3p l\u1ec7\r\n\r\nconsole.log(USER_SETTINGS); \/\/ Output: { theme: 'light', notifications: false }\r\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Khai-bao-Hang-so-trong-Python-Quy-uoc-dat-ten\"><\/span>Khai b\u00e1o H\u1eb1ng s\u1ed1 trong Python (Quy \u01b0\u1edbc \u0111\u1eb7t t\u00ean)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Python kh\u00f4ng c\u00f3 t\u1eeb kh\u00f3a ri\u00eang bi\u1ec7t \u0111\u1ec3 t\u1ea1o ra h\u1eb1ng s\u1ed1 th\u1ef1c s\u1ef1 b\u1ea5t bi\u1ebfn nh\u01b0 <code>const<\/code> c\u1ee7a JavaScript hay <code>final<\/code> c\u1ee7a Java. Thay v\u00e0o \u0111\u00f3, c\u1ed9ng \u0111\u1ed3ng Python s\u1eed d\u1ee5ng m\u1ed9t <strong>quy \u01b0\u1edbc (convention)<\/strong> m\u1ea1nh m\u1ebd.<\/p>\n<p>Quy \u01b0\u1edbc n\u00e0y l\u00e0 \u0111\u1eb7t t\u00ean h\u1eb1ng s\u1ed1 b\u1eb1ng ch\u1eef <strong>IN HOA TO\u00c0N B\u1ed8<\/strong>, c\u00e1c t\u1eeb \u0111\u01b0\u1ee3c n\u1ed1i v\u1edbi nhau b\u1eb1ng d\u1ea5u g\u1ea1ch d\u01b0\u1edbi (<code>_<\/code>). \u0110\u00e2y l\u00e0 t\u00edn hi\u1ec7u cho c\u00e1c l\u1eadp tr\u00ecnh vi\u00ean kh\u00e1c (v\u00e0 ch\u00ednh b\u1ea1n) r\u1eb1ng &#8220;gi\u00e1 tr\u1ecb n\u00e0y kh\u00f4ng n\u00ean \u0111\u01b0\u1ee3c thay \u0111\u1ed5i&#8221;.<\/p>\n<pre><code class=\"language-plaintext\"># Quy \u01b0\u1edbc khai b\u00e1o h\u1eb1ng s\u1ed1 trong Python\r\nPI = 3.14159\r\nGRAVITATIONAL_ACCELERATION = 9.8\r\nDEFAULT_TIMEOUT = 30 # Gi\u00e2y\r\nADMIN_EMAIL = \"admin@example.com\"\r\n\r\n# V\u1ec1 m\u1eb7t k\u1ef9 thu\u1eadt, Python v\u1eabn cho ph\u00e9p g\u00e1n l\u1ea1i gi\u00e1 tr\u1ecb...\r\n# PI = 3.14 # Kh\u00f4ng g\u00e2y l\u1ed7i, nh\u01b0ng vi ph\u1ea1m quy \u01b0\u1edbc v\u00e0 l\u00e0 th\u1ef1c h\u00e0nh x\u1ea5u\r\n\r\n# ...nh\u01b0ng b\u1ea1n TUY\u1ec6T \u0110\u1ed0I kh\u00f4ng n\u00ean l\u00e0m v\u1eady!\r\nprint(PI)\r\nprint(ADMIN_EMAIL)\r\n<\/code><\/pre>\n<p>M\u1eb7c d\u00f9 tr\u00ecnh th\u00f4ng d\u1ecbch Python kh\u00f4ng ng\u0103n c\u1ea3n vi\u1ec7c g\u00e1n l\u1ea1i gi\u00e1 tr\u1ecb, vi\u1ec7c tu\u00e2n th\u1ee7 quy \u01b0\u1edbc n\u00e0y l\u00e0 c\u1ef1c k\u1ef3 quan tr\u1ecdng \u0111\u1ec3 duy tr\u00ec s\u1ef1 r\u00f5 r\u00e0ng v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec cho m\u00e3 ngu\u1ed3n Python.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Khai-bao-Hang-so-trong-Java-voi-final\"><\/span>Khai b\u00e1o H\u1eb1ng s\u1ed1 trong Java (v\u1edbi <code>final<\/code>)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Trong Java, b\u1ea1n s\u1eed d\u1ee5ng t\u1eeb kh\u00f3a <code>final<\/code> \u0111\u1ec3 khai b\u00e1o m\u1ed9t bi\u1ebfn c\u00f3 gi\u00e1 tr\u1ecb kh\u00f4ng th\u1ec3 thay \u0111\u1ed5i sau khi \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o l\u1ea7n \u0111\u1ea7u. Bi\u1ebfn <code>final<\/code> c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o ngay t\u1ea1i l\u00fac khai b\u00e1o ho\u1eb7c trong h\u00e0m kh\u1edfi t\u1ea1o (constructor) c\u1ee7a l\u1edbp (n\u1ebfu l\u00e0 bi\u1ebfn instance).<\/p>\n<pre><code class=\"language-plaintext\">public class ConstantsExample {\r\n\r\n    \/\/ Khai b\u00e1o h\u1eb1ng s\u1ed1 static final (th\u01b0\u1eddng d\u00f9ng cho h\u1eb1ng s\u1ed1 d\u00f9ng chung)\r\n    public static final double PI = 3.14159;\r\n    public static final int MAX_THREADS = 10;\r\n    public static final String DEFAULT_GREETING = \"Hello World\";\r\n\r\n    \/\/ Khai b\u00e1o bi\u1ebfn final instance (gi\u00e1 tr\u1ecb c\u00f3 th\u1ec3 kh\u00e1c nhau gi\u1eefa c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng)\r\n    private final String creationTimestamp;\r\n\r\n    public ConstantsExample() {\r\n        \/\/ Kh\u1edfi t\u1ea1o bi\u1ebfn final trong constructor\r\n        this.creationTimestamp = java.time.LocalDateTime.now().toString();\r\n    }\r\n\r\n    public void displayValues() {\r\n        System.out.println(\"PI: \" + PI);\r\n        System.out.println(\"Max Threads: \" + MAX_THREADS);\r\n        System.out.println(\"Creation Timestamp: \" + creationTimestamp);\r\n\r\n        \/\/ C\u1ed1 g\u1eafng g\u00e1n l\u1ea1i gi\u00e1 tr\u1ecb s\u1ebd g\u00e2y l\u1ed7i bi\u00ean d\u1ecbch\r\n        \/\/ PI = 3.14; \/\/ Compile Error: cannot assign a value to final variable PI\r\n        \/\/ this.creationTimestamp = \"new time\"; \/\/ Compile Error\r\n    }\r\n\r\n    public static void main(String[] args) {\r\n        ConstantsExample ex = new ConstantsExample();\r\n        ex.displayValues();\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>T\u01b0\u01a1ng t\u1ef1 JavaScript, n\u1ebfu bi\u1ebfn <code>final<\/code> trong Java l\u00e0 m\u1ed9t tham chi\u1ebfu \u0111\u1ed1i t\u01b0\u1ee3ng, b\u1ea1n kh\u00f4ng th\u1ec3 g\u00e1n l\u1ea1i tham chi\u1ebfu \u0111\u00f3 cho \u0111\u1ed1i t\u01b0\u1ee3ng kh\u00e1c, nh\u01b0ng tr\u1ea1ng th\u00e1i b\u00ean trong c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c tham chi\u1ebfu th\u00ec v\u1eabn c\u00f3 th\u1ec3 thay \u0111\u1ed5i (tr\u1eeb khi b\u1ea3n th\u00e2n \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u00f3 l\u00e0 b\u1ea5t bi\u1ebfn).<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Khai-bao-Hang-so-trong-CC-voi-const-va-define\"><\/span>Khai b\u00e1o H\u1eb1ng s\u1ed1 trong C\/C++ (v\u1edbi <code>const<\/code> v\u00e0 <code>#define<\/code>)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>C v\u00e0 C++ cung c\u1ea5p hai c\u00e1ch ch\u00ednh \u0111\u1ec3 \u0111\u1ecbnh ngh\u0129a h\u1eb1ng s\u1ed1: s\u1eed d\u1ee5ng t\u1eeb kh\u00f3a <code>const<\/code> v\u00e0 s\u1eed d\u1ee5ng ch\u1ec9 th\u1ecb ti\u1ec1n x\u1eed l\u00fd <code>#define<\/code>.<\/p>\n<ol>\n<li><strong>S\u1eed d\u1ee5ng <\/strong><code><strong>const<\/strong><\/code><strong>:<\/strong> \u0110\u00e2y l\u00e0 c\u00e1ch \u0111\u01b0\u1ee3c \u01b0a chu\u1ed9ng h\u01a1n trong C++ hi\u1ec7n \u0111\u1ea1i v\u00ec n\u00f3 c\u00f3 ki\u1ec3m tra ki\u1ec3u d\u1eef li\u1ec7u v\u00e0 ph\u1ea1m vi (scope) r\u00f5 r\u00e0ng, ho\u1ea1t \u0111\u1ed9ng gi\u1ed1ng nh\u01b0 m\u1ed9t bi\u1ebfn ch\u1ec9 \u0111\u1ecdc th\u1ef1c s\u1ef1.\n<pre><code class=\"language-plaintext\">#include &lt;iostream&gt;\r\n#include &lt;string&gt;\r\n\r\nint main() {\r\n    \/\/ Khai b\u00e1o h\u1eb1ng s\u1ed1 v\u1edbi const\r\n    const double PI = 3.14159;\r\n    const int MAX_BUFFER_SIZE = 1024;\r\n    const std::string SITE_NAME = \"MyWebsite.com\";\r\n\r\n    std::cout &lt;&lt; \"PI: \" &lt;&lt; PI &lt;&lt; std::endl;\r\n    std::cout &lt;&lt; \"Max Buffer Size: \" &lt;&lt; MAX_BUFFER_SIZE &lt;&lt; std::endl;\r\n    std::cout &lt;&lt; \"Site Name: \" &lt;&lt; SITE_NAME &lt;&lt; std::endl;\r\n\r\n    \/\/ C\u1ed1 g\u1eafng g\u00e1n l\u1ea1i gi\u00e1 tr\u1ecb s\u1ebd g\u00e2y l\u1ed7i bi\u00ean d\u1ecbch\r\n    \/\/ PI = 3.14; \/\/ Compile Error: assignment of read-only variable 'PI'\r\n    \/\/ MAX_BUFFER_SIZE = 2048; \/\/ Compile Error\r\n\r\n    return 0;\r\n}\r\n<\/code><\/pre>\n<p><code>const<\/code> t\u00f4n tr\u1ecdng c\u00e1c quy t\u1eafc v\u1ec1 ph\u1ea1m vi gi\u1ed1ng nh\u01b0 bi\u1ebfn th\u00f4ng th\u01b0\u1eddng (v\u00ed d\u1ee5: h\u1eb1ng s\u1ed1 khai b\u00e1o trong h\u00e0m ch\u1ec9 t\u1ed3n t\u1ea1i trong h\u00e0m \u0111\u00f3).<\/li>\n<li><strong>S\u1eed d\u1ee5ng <\/strong><code><strong>#define<\/strong><\/code><strong>:<\/strong> \u0110\u00e2y l\u00e0 m\u1ed9t ch\u1ec9 th\u1ecb ti\u1ec1n x\u1eed l\u00fd (preprocessor directive). Tr\u01b0\u1edbc khi m\u00e3 \u0111\u01b0\u1ee3c bi\u00ean d\u1ecbch, b\u1ed9 ti\u1ec1n x\u1eed l\u00fd s\u1ebd t\u00ecm v\u00e0 thay th\u1ebf t\u1ea5t c\u1ea3 c\u00e1c v\u00fd hi\u1ec7n c\u1ee7a t\u00ean \u0111\u1ecbnh danh (macro) b\u1eb1ng gi\u00e1 tr\u1ecb \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a.\n<pre><code class=\"language-plaintext\">#include &lt;iostream&gt;\r\n\r\n\/\/ \u0110\u1ecbnh ngh\u0129a h\u1eb1ng s\u1ed1 b\u1eb1ng #define\r\n#define PI 3.14159\r\n#define MAX_BUFFER_SIZE 1024\r\n#define GREETING \"Hello from #define!\"\r\n\r\nint main() {\r\n    double radius = 5.0;\r\n    double circumference = 2 * PI * radius; \/\/ PI s\u1ebd \u0111\u01b0\u1ee3c thay th\u1ebf b\u1eb1ng 3.14159\r\n\r\n    char buffer[MAX_BUFFER_SIZE]; \/\/ MAX_BUFFER_SIZE s\u1ebd \u0111\u01b0\u1ee3c thay th\u1ebf b\u1eb1ng 1024\r\n\r\n    std::cout &lt;&lt; GREETING &lt;&lt; std::endl; \/\/ GREETING s\u1ebd \u0111\u01b0\u1ee3c thay th\u1ebf b\u1eb1ng \"Hello from #define!\"\r\n    std::cout &lt;&lt; \"Circumference: \" &lt;&lt; circumference &lt;&lt; std::endl;\r\n\r\n    \/\/ Kh\u00f4ng c\u00f3 kh\u00e1i ni\u1ec7m g\u00e1n l\u1ea1i v\u00ec \u0111\u00e2y l\u00e0 thay th\u1ebf v\u0103n b\u1ea3n\r\n    return 0;\r\n}\r\n<\/code><\/pre>\n<p>Nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a <code>#define<\/code> l\u00e0 n\u00f3 kh\u00f4ng c\u00f3 ki\u1ec3m tra ki\u1ec3u d\u1eef li\u1ec7u (ch\u1ec9 l\u00e0 thay th\u1ebf v\u0103n b\u1ea3n) v\u00e0 kh\u00f4ng tu\u00e2n theo c\u00e1c quy t\u1eafc ph\u1ea1m vi th\u00f4ng th\u01b0\u1eddng, c\u00f3 th\u1ec3 d\u1eabn \u0111\u1ebfn c\u00e1c l\u1ed7i kh\u00f3 t\u00ecm n\u1ebfu kh\u00f4ng c\u1ea9n th\u1eadn. Do \u0111\u00f3, <code>const<\/code> th\u01b0\u1eddng l\u00e0 l\u1ef1a ch\u1ecdn t\u1ed1t h\u01a1n trong C++ cho vi\u1ec7c \u0111\u1ecbnh ngh\u0129a h\u1eb1ng s\u1ed1.<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Hang-so-01.jpg\" alt=\"H\u1eb1ng s\u1ed1 01\" width=\"750\" height=\"451\" class=\"aligncenter size-full wp-image-27105\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Hang-so-01.jpg 750w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Hang-so-01-300x180.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"So-sanh-chi-tiet-Hang-so-va-Bien-so-Constant-vs-Variable\"><\/span>So s\u00e1nh chi ti\u1ebft: H\u1eb1ng s\u1ed1 v\u00e0 Bi\u1ebfn s\u1ed1 (Constant vs Variable)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Hi\u1ec3u r\u00f5 s\u1ef1 kh\u00e1c bi\u1ec7t gi\u1eefa h\u1eb1ng s\u1ed1 v\u00e0 bi\u1ebfn s\u1ed1 l\u00e0 \u0111i\u1ec1u c\u1ef1c k\u1ef3 quan tr\u1ecdng \u0111\u1ed1i v\u1edbi b\u1ea5t k\u1ef3 l\u1eadp tr\u00ecnh vi\u00ean n\u00e0o, \u0111\u1eb7c bi\u1ec7t l\u00e0 ng\u01b0\u1eddi m\u1edbi b\u1eaft \u0111\u1ea7u. M\u1eb7c d\u00f9 c\u1ea3 hai \u0111\u1ec1u d\u00f9ng \u0111\u1ec3 l\u01b0u tr\u1eef d\u1eef li\u1ec7u d\u01b0\u1edbi m\u1ed9t c\u00e1i t\u00ean, ch\u00fang c\u00f3 m\u1ee5c \u0111\u00edch v\u00e0 h\u00e0nh vi ho\u00e0n to\u00e0n kh\u00e1c nhau.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Diem-khac-biet-cot-loi-Tinh-thay-doi-gia-tri\"><\/span>\u0110i\u1ec3m kh\u00e1c bi\u1ec7t c\u1ed1t l\u00f5i: T\u00ednh thay \u0111\u1ed5i gi\u00e1 tr\u1ecb<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0110\u00e2y l\u00e0 s\u1ef1 kh\u00e1c bi\u1ec7t n\u1ec1n t\u1ea3ng v\u00e0 d\u1ec5 nh\u1eadn bi\u1ebft nh\u1ea5t:<\/p>\n<ul>\n<li><strong>H\u1eb1ng s\u1ed1 (Constant):<\/strong> Gi\u00e1 tr\u1ecb <strong>kh\u00f4ng th\u1ec3 thay \u0111\u1ed5i<\/strong> sau khi \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o. N\u00f3 l\u00e0 b\u1ea5t bi\u1ebfn (immutable). M\u1ecdi c\u1ed1 g\u1eafng g\u00e1n l\u1ea1i gi\u00e1 tr\u1ecb cho h\u1eb1ng s\u1ed1 s\u1ebd g\u00e2y ra l\u1ed7i (trong h\u1ea7u h\u1ebft c\u00e1c ng\u00f4n ng\u1eef) ho\u1eb7c \u00edt nh\u1ea5t l\u00e0 vi ph\u1ea1m quy \u01b0\u1edbc (nh\u01b0 trong Python).\n<pre><code class=\"language-plaintext\">const MY_CONSTANT = 100;\r\n\/\/ MY_CONSTANT = 200; \/\/ G\u00e2y l\u1ed7i TypeError\r\n<\/code><\/pre>\n<\/li>\n<li><strong>Bi\u1ebfn s\u1ed1 (Variable):<\/strong> Gi\u00e1 tr\u1ecb <strong>c\u00f3 th\u1ec3 thay \u0111\u1ed5i<\/strong> b\u1ea5t k\u1ef3 l\u00fac n\u00e0o sau khi khai b\u00e1o. N\u00f3 l\u00e0 kh\u1ea3 bi\u1ebfn (mutable). B\u1ea1n c\u00f3 th\u1ec3 g\u00e1n l\u1ea1i gi\u00e1 tr\u1ecb m\u1edbi cho bi\u1ebfn s\u1ed1 nhi\u1ec1u l\u1ea7n trong ch\u01b0\u01a1ng tr\u00ecnh.\n<pre><code class=\"language-plaintext\">let myVariable = 100;\r\nconsole.log(myVariable); \/\/ Output: 100\r\nmyVariable = 200; \/\/ Ho\u00e0n to\u00e0n h\u1ee3p l\u1ec7\r\nconsole.log(myVariable); \/\/ Output: 200\r\n<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Muc-dich-su-dung\"><\/span>M\u1ee5c \u0111\u00edch s\u1eed d\u1ee5ng<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>S\u1ef1 kh\u00e1c bi\u1ec7t v\u1ec1 t\u00ednh thay \u0111\u1ed5i d\u1eabn \u0111\u1ebfn m\u1ee5c \u0111\u00edch s\u1eed d\u1ee5ng kh\u00e1c nhau:<\/p>\n<ul>\n<li><strong>H\u1eb1ng s\u1ed1:<\/strong> D\u00f9ng \u0111\u1ec3 l\u01b0u tr\u1eef c\u00e1c gi\u00e1 tr\u1ecb m\u00e0 b\u1ea1n bi\u1ebft ch\u1eafc ch\u1eafn s\u1ebd kh\u00f4ng (v\u00e0 kh\u00f4ng n\u00ean) thay \u0111\u1ed5i trong su\u1ed1t ch\u01b0\u01a1ng tr\u00ecnh. V\u00ed d\u1ee5: c\u00e1c gi\u00e1 tr\u1ecb to\u00e1n h\u1ecdc (Pi, e), c\u00e1c ng\u01b0\u1ee1ng c\u1ea5u h\u00ecnh (s\u1ed1 k\u1ebft n\u1ed1i t\u1ed1i \u0111a, k\u00edch th\u01b0\u1edbc b\u1ed9 \u0111\u1ec7m), c\u00e1c chu\u1ed7i th\u00f4ng b\u00e1o c\u1ed1 \u0111\u1ecbnh, c\u00e1c m\u00e3 tr\u1ea1ng th\u00e1i&#8230;<\/li>\n<li><strong>Bi\u1ebfn s\u1ed1:<\/strong> D\u00f9ng \u0111\u1ec3 l\u01b0u tr\u1eef c\u00e1c gi\u00e1 tr\u1ecb c\u1ea7n thay \u0111\u1ed5i ho\u1eb7c c\u1eadp nh\u1eadt trong qu\u00e1 tr\u00ecnh ch\u01b0\u01a1ng tr\u00ecnh ch\u1ea1y. V\u00ed d\u1ee5: b\u1ed9 \u0111\u1ebfm v\u00f2ng l\u1eb7p, t\u1ed5ng t\u00edch l\u0169y, d\u1eef li\u1ec7u nh\u1eadp t\u1eeb ng\u01b0\u1eddi d\u00f9ng, tr\u1ea1ng th\u00e1i hi\u1ec7n t\u1ea1i c\u1ee7a \u1ee9ng d\u1ee5ng&#8230;<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Cu-phap-khai-bao\"><\/span>C\u00fa ph\u00e1p khai b\u00e1o<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh th\u01b0\u1eddng s\u1eed d\u1ee5ng c\u00e1c t\u1eeb kh\u00f3a kh\u00e1c nhau \u0111\u1ec3 ph\u00e2n bi\u1ec7t khai b\u00e1o h\u1eb1ng s\u1ed1 v\u00e0 bi\u1ebfn s\u1ed1:<\/p>\n<ul>\n<li><strong>H\u1eb1ng s\u1ed1:<\/strong> Th\u01b0\u1eddng d\u00f9ng c\u00e1c t\u1eeb kh\u00f3a nh\u01b0 <code>const<\/code> (JavaScript, C\/C++), <code>final<\/code> (Java), ho\u1eb7c theo quy \u01b0\u1edbc \u0111\u1eb7t t\u00ean (Python).<\/li>\n<li><strong>Bi\u1ebfn s\u1ed1:<\/strong> Th\u01b0\u1eddng d\u00f9ng c\u00e1c t\u1eeb kh\u00f3a nh\u01b0 <code>let<\/code>, <code>var<\/code> (JavaScript), t\u00ean bi\u1ebfn th\u00f4ng th\u01b0\u1eddng (Python), ki\u1ec3u d\u1eef li\u1ec7u + t\u00ean bi\u1ebfn (Java, C\/C++).<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Bang-tom-tat-so-sanh-nhanh\"><\/span>B\u1ea3ng t\u00f3m t\u1eaft so s\u00e1nh nhanh<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<figure class=\"table\">\n<table>\n<thead>\n<tr>\n<th>Ti\u00eau ch\u00ed<\/th>\n<th>H\u1eb1ng s\u1ed1 (Constant)<\/th>\n<th>Bi\u1ebfn s\u1ed1 (Variable)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Kh\u1ea3 n\u0103ng thay \u0111\u1ed5i<\/strong><\/td>\n<td>\u274c Kh\u00f4ng th\u1ec3 thay \u0111\u1ed5i sau khi kh\u1edfi t\u1ea1o<\/td>\n<td>\u2705 C\u00f3 th\u1ec3 thay \u0111\u1ed5i nhi\u1ec1u l\u1ea7n<\/td>\n<\/tr>\n<tr>\n<td><strong>T\u00ednh ch\u1ea5t<\/strong><\/td>\n<td>B\u1ea5t bi\u1ebfn (Immutable)<\/td>\n<td>Kh\u1ea3 bi\u1ebfn (Mutable)<\/td>\n<\/tr>\n<tr>\n<td><strong>T\u1eeb kh\u00f3a (v\u00ed d\u1ee5)<\/strong><\/td>\n<td><code>const<\/code>, <code>final<\/code>, Quy \u01b0\u1edbc <code>ALL_CAPS<\/code><\/td>\n<td><code>let<\/code>, <code>var<\/code>, Ki\u1ec3u d\u1eef li\u1ec7u (int, String)<\/td>\n<\/tr>\n<tr>\n<td><strong>M\u1ee5c \u0111\u00edch ch\u00ednh<\/strong><\/td>\n<td>L\u01b0u gi\u00e1 tr\u1ecb c\u1ed1 \u0111\u1ecbnh, c\u1ea5u h\u00ecnh<\/td>\n<td>L\u01b0u gi\u00e1 tr\u1ecb thay \u0111\u1ed5i, tr\u1ea1ng th\u00e1i<\/td>\n<\/tr>\n<tr>\n<td><strong>L\u1ee3i \u00edch ch\u00ednh<\/strong><\/td>\n<td>D\u1ec5 \u0111\u1ecdc, d\u1ec5 b\u1ea3o tr\u00ec, an to\u00e0n<\/td>\n<td>Linh ho\u1ea1t, l\u01b0u tr\u1eef d\u1eef li\u1ec7u \u0111\u1ed9ng<\/td>\n<\/tr>\n<tr>\n<td><strong>G\u00e2y l\u1ed7i n\u1ebfu g\u00e1n l\u1ea1i?<\/strong><\/td>\n<td>\u2705 C\u00f3 (ho\u1eb7c vi ph\u1ea1m quy \u01b0\u1edbc)<\/td>\n<td>\u274c Kh\u00f4ng<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p>Vi\u1ec7c l\u1ef1a ch\u1ecdn s\u1eed d\u1ee5ng h\u1eb1ng s\u1ed1 hay bi\u1ebfn s\u1ed1 ph\u1ee5 thu\u1ed9c v\u00e0o vi\u1ec7c li\u1ec7u gi\u00e1 tr\u1ecb b\u1ea1n c\u1ea7n l\u01b0u tr\u1eef c\u00f3 c\u1ea7n thay \u0111\u1ed5i trong qu\u00e1 tr\u00ecnh ch\u1ea1y ch\u01b0\u01a1ng tr\u00ecnh hay kh\u00f4ng. H\u00e3y lu\u00f4n \u01b0u ti\u00ean s\u1eed d\u1ee5ng h\u1eb1ng s\u1ed1 n\u1ebfu gi\u00e1 tr\u1ecb \u0111\u00f3 l\u00e0 c\u1ed1 \u0111\u1ecbnh.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Cac-loai-Hang-so-thuong-gap-trong-lap-trinh\"><\/span>C\u00e1c lo\u1ea1i H\u1eb1ng s\u1ed1 th\u01b0\u1eddng g\u1eb7p trong l\u1eadp tr\u00ecnh<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Khi n\u00f3i v\u1ec1 h\u1eb1ng s\u1ed1, ch\u00fang ta th\u01b0\u1eddng ngh\u0129 \u0111\u1ebfn c\u00e1c t\u00ean \u0111\u1ecbnh danh \u0111\u01b0\u1ee3c khai b\u00e1o b\u1eb1ng <code>const<\/code> hay <code>final<\/code>. Tuy nhi\u00ean, c\u00f3 m\u1ed9t kh\u00e1i ni\u1ec7m kh\u00e1c c\u0169ng li\u00ean quan m\u1eadt thi\u1ebft, \u0111\u00f3 l\u00e0 h\u1eb1ng s\u1ed1 nguy\u00ean v\u0103n.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Hang-so-Nguyen-van-Literal-Constants\"><\/span>H\u1eb1ng s\u1ed1 Nguy\u00ean v\u0103n (Literal Constants)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>H\u1eb1ng s\u1ed1 nguy\u00ean v\u0103n, hay <strong>literal<\/strong>, l\u00e0 c\u00e1c gi\u00e1 tr\u1ecb \u0111\u01b0\u1ee3c vi\u1ebft tr\u1ef1c ti\u1ebfp v\u00e0o trong m\u00e3 ngu\u1ed3n c\u1ee7a b\u1ea1n. Ch\u00fang kh\u00f4ng c\u00f3 t\u00ean \u0111\u1ecbnh danh ri\u00eang m\u00e0 b\u1ea3n th\u00e2n ch\u00fang \u0111\u00e3 l\u00e0 gi\u00e1 tr\u1ecb c\u1ed1 \u0111\u1ecbnh.<\/p>\n<p>V\u00ed d\u1ee5 v\u1ec1 c\u00e1c literal:<\/p>\n<ul>\n<li>S\u1ed1 nguy\u00ean: <code>10<\/code>, <code>0<\/code>, <code>-5<\/code><\/li>\n<li>S\u1ed1 th\u1ef1c: <code>3.14<\/code>, <code>-0.5<\/code>, <code>2.718<\/code><\/li>\n<li>Chu\u1ed7i k\u00fd t\u1ef1: <code>\"Hello World\"<\/code>, <code>'Xin ch\u00e0o'<\/code>, <code>\"API_KEY_123\"<\/code><\/li>\n<li>Gi\u00e1 tr\u1ecb Boolean: <code>true<\/code>, <code>false<\/code><\/li>\n<li>Gi\u00e1 tr\u1ecb \u0111\u1eb7c bi\u1ec7t: <code>null<\/code>, <code>undefined<\/code> (trong m\u1ed9t s\u1ed1 ng\u00f4n ng\u1eef)<\/li>\n<\/ul>\n<pre><code class=\"language-plaintext\">let age = 30; \/\/ 30 l\u00e0 m\u1ed9t literal s\u1ed1 nguy\u00ean\r\nlet message = \"Success\"; \/\/ \"Success\" l\u00e0 m\u1ed9t literal chu\u1ed7i\r\nlet isEnabled = true; \/\/ true l\u00e0 m\u1ed9t literal boolean\r\n\r\nconsole.log(100); \/\/ 100 l\u00e0 literal \u0111\u01b0\u1ee3c d\u00f9ng tr\u1ef1c ti\u1ebfp\r\n<\/code><\/pre>\n<p>Literal l\u00e0 c\u00e1ch c\u01a1 b\u1ea3n nh\u1ea5t \u0111\u1ec3 bi\u1ec3u di\u1ec5n c\u00e1c gi\u00e1 tr\u1ecb c\u1ed1 \u0111\u1ecbnh. Tuy nhi\u00ean, vi\u1ec7c s\u1eed d\u1ee5ng qu\u00e1 nhi\u1ec1u literal tr\u1ef1c ti\u1ebfp trong code (\u0111\u1eb7c bi\u1ec7t l\u00e0 c\u00e1c &#8220;magic number&#8221;) c\u00f3 th\u1ec3 l\u00e0m gi\u1ea3m t\u00ednh d\u1ec5 \u0111\u1ecdc v\u00e0 kh\u00f3 b\u1ea3o tr\u00ec.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Hang-so-Ky-hieu-Symbolic-Constants\"><\/span>H\u1eb1ng s\u1ed1 K\u00fd hi\u1ec7u (Symbolic Constants)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0110\u00e2y ch\u00ednh l\u00e0 lo\u1ea1i h\u1eb1ng s\u1ed1 m\u00e0 ch\u00fang ta \u0111\u00e3 th\u1ea3o lu\u1eadn ch\u1ee7 y\u1ebfu t\u1eeb \u0111\u1ea7u b\u00e0i vi\u1ebft: s\u1eed d\u1ee5ng m\u1ed9t <strong>t\u00ean \u0111\u1ecbnh danh (symbol)<\/strong> \u0111\u1ec3 \u0111\u1ea1i di\u1ec7n cho m\u1ed9t gi\u00e1 tr\u1ecb c\u1ed1 \u0111\u1ecbnh. Ch\u00fang \u0111\u01b0\u1ee3c khai b\u00e1o b\u1eb1ng c\u00e1c t\u1eeb kh\u00f3a nh\u01b0 <code>const<\/code>, <code>final<\/code> ho\u1eb7c theo quy \u01b0\u1edbc.<\/p>\n<pre><code class=\"language-plaintext\">const MAX_CONNECTIONS = 10; \/\/ MAX_CONNECTIONS l\u00e0 h\u1eb1ng s\u1ed1 k\u00fd hi\u1ec7u\r\nfinal String ERROR_MESSAGE = \"Invalid input\"; \/\/ ERROR_MESSAGE l\u00e0 h\u1eb1ng s\u1ed1 k\u00fd hi\u1ec7u\r\nPI = 3.14159 # PI (theo quy \u01b0\u1edbc Python) l\u00e0 h\u1eb1ng s\u1ed1 k\u00fd hi\u1ec7u\r\n<\/code><\/pre>\n<p>\u01afu \u0111i\u1ec3m l\u1edbn c\u1ee7a h\u1eb1ng s\u1ed1 k\u00fd hi\u1ec7u so v\u1edbi literal l\u00e0:<\/p>\n<ol>\n<li><strong>T\u0103ng t\u00ednh d\u1ec5 \u0111\u1ecdc:<\/strong> T\u00ean g\u1ee3i nh\u1edb <code>MAX_CONNECTIONS<\/code> r\u00f5 r\u00e0ng h\u01a1n nhi\u1ec1u so v\u1edbi ch\u1ec9 vi\u1ebft s\u1ed1 <code>10<\/code>.<\/li>\n<li><strong>T\u0103ng t\u00ednh d\u1ec5 b\u1ea3o tr\u00ec:<\/strong> N\u1ebfu gi\u00e1 tr\u1ecb c\u1ea7n thay \u0111\u1ed5i, ch\u1ec9 c\u1ea7n s\u1eeda \u1edf n\u01a1i khai b\u00e1o h\u1eb1ng s\u1ed1 k\u00fd hi\u1ec7u.<\/li>\n<\/ol>\n<p>Do \u0111\u00f3, th\u1ef1c h\u00e0nh t\u1ed1t l\u00e0 n\u00ean thay th\u1ebf c\u00e1c literal &#8220;ma thu\u1eadt&#8221; b\u1eb1ng c\u00e1c h\u1eb1ng s\u1ed1 k\u00fd hi\u1ec7u c\u00f3 t\u00ean \u00fd ngh\u0129a.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Hang-so-02.jpg\" alt=\"H\u1eb1ng s\u1ed1 02\" width=\"750\" height=\"462\" class=\"aligncenter size-full wp-image-27106\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Hang-so-02.jpg 750w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/04\/Hang-so-02-300x185.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Mot-so-luu-y-va-Quy-uoc-khi-su-dung-Hang-so\"><\/span>M\u1ed9t s\u1ed1 l\u01b0u \u00fd v\u00e0 Quy \u01b0\u1edbc khi s\u1eed d\u1ee5ng H\u1eb1ng s\u1ed1<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0110\u1ec3 khai th\u00e1c t\u1ed1i \u0111a l\u1ee3i \u00edch c\u1ee7a h\u1eb1ng s\u1ed1 v\u00e0 vi\u1ebft code chuy\u00ean nghi\u1ec7p h\u01a1n, b\u1ea1n n\u00ean tu\u00e2n th\u1ee7 m\u1ed9t s\u1ed1 quy \u01b0\u1edbc v\u00e0 l\u01b0u \u00fd quan tr\u1ecdng sau:<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Quy-uoc-dat-ten-Naming-Convention\"><\/span>Quy \u01b0\u1edbc \u0111\u1eb7t t\u00ean (Naming Convention)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>M\u1ed9t quy \u01b0\u1edbc r\u1ea5t ph\u1ed5 bi\u1ebfn v\u00e0 \u0111\u01b0\u1ee3c khuy\u1ebfn ngh\u1ecb m\u1ea1nh m\u1ebd trong h\u1ea7u h\u1ebft c\u00e1c ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh l\u00e0 <strong>\u0111\u1eb7t t\u00ean h\u1eb1ng s\u1ed1 b\u1eb1ng ch\u1eef IN HOA TO\u00c0N B\u1ed8<\/strong>, c\u00e1c t\u1eeb \u0111\u01b0\u1ee3c ph\u00e2n t\u00e1ch b\u1eb1ng d\u1ea5u g\u1ea1ch d\u01b0\u1edbi (<code>_<\/code>). V\u00ed d\u1ee5: <code>MAX_SIZE<\/code>, <code>DEFAULT_PORT<\/code>, <code>API_KEY<\/code>.<\/p>\n<p>Quy \u01b0\u1edbc n\u00e0y gi\u00fap c\u00e1c l\u1eadp tr\u00ecnh vi\u00ean nh\u1eadn di\u1ec7n ngay l\u1eadp t\u1ee9c m\u1ed9t \u0111\u1ecbnh danh l\u00e0 h\u1eb1ng s\u1ed1 ch\u1ec9 b\u1eb1ng c\u00e1ch nh\u00ecn v\u00e0o t\u00ean c\u1ee7a n\u00f3. \u0110i\u1ec1u n\u00e0y c\u1ea3i thi\u1ec7n \u0111\u00e1ng k\u1ec3 t\u1ed1c \u0111\u1ed9 \u0111\u1ecdc hi\u1ec3u code. M\u1eb7c d\u00f9 m\u1ed9t s\u1ed1 ng\u00f4n ng\u1eef kh\u00f4ng b\u1eaft bu\u1ed9c, vi\u1ec7c tu\u00e2n th\u1ee7 l\u00e0 r\u1ea5t n\u00ean l\u00e0m.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Khi-nao-nen-dung-Hang-so-thay-vi-Bien-so\"><\/span>Khi n\u00e0o n\u00ean d\u00f9ng H\u1eb1ng s\u1ed1 thay v\u00ec Bi\u1ebfn s\u1ed1?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>H\u00e3y t\u1ef1 h\u1ecfi: &#8220;Gi\u00e1 tr\u1ecb n\u00e0y c\u00f3 bao gi\u1edd c\u1ea7n thay \u0111\u1ed5i sau khi \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o kh\u00f4ng?&#8221;. N\u1ebfu c\u00e2u tr\u1ea3 l\u1eddi l\u00e0 <strong>KH\u00d4NG<\/strong>, b\u1ea1n n\u00ean s\u1eed d\u1ee5ng h\u1eb1ng s\u1ed1.<\/p>\n<p>C\u00e1c tr\u01b0\u1eddng h\u1ee3p \u0111i\u1ec3n h\u00ecnh n\u00ean d\u00f9ng h\u1eb1ng s\u1ed1:<\/p>\n<ul>\n<li>Gi\u00e1 tr\u1ecb to\u00e1n h\u1ecdc c\u1ed1 \u0111\u1ecbnh (PI, e, s\u1ed1 ng\u00e0y trong tu\u1ea7n&#8230;).<\/li>\n<li>C\u00e1c ng\u01b0\u1ee1ng, gi\u1edbi h\u1ea1n c\u1ea5u h\u00ecnh (s\u1ed1 k\u1ebft n\u1ed1i t\u1ed1i \u0111a, k\u00edch th\u01b0\u1edbc b\u1ed9 \u0111\u1ec7m t\u1ed1i thi\u1ec3u&#8230;).<\/li>\n<li>C\u00e1c chu\u1ed7i th\u00f4ng b\u00e1o l\u1ed7i, th\u00f4ng \u0111i\u1ec7p c\u1ed1 \u0111\u1ecbnh hi\u1ec3n th\u1ecb cho ng\u01b0\u1eddi d\u00f9ng.<\/li>\n<li>C\u00e1c m\u00e3 tr\u1ea1ng th\u00e1i (HTTP status codes, m\u00e3 l\u1ed7i n\u1ed9i b\u1ed9&#8230;).<\/li>\n<li>C\u00e1c t\u00f9y ch\u1ecdn c\u1ea5u h\u00ecnh kh\u00f4ng thay \u0111\u1ed5i khi ch\u01b0\u01a1ng tr\u00ecnh ch\u1ea1y (API keys (c\u1ea7n x\u1eed l\u00fd b\u1ea3o m\u1eadt!), t\u00ean file c\u1ea5u h\u00ecnh&#8230;).<\/li>\n<li>B\u1ea5t k\u1ef3 gi\u00e1 tr\u1ecb n\u00e0o b\u1ea1n mu\u1ed1n \u0111\u1ea3m b\u1ea3o kh\u00f4ng b\u1ecb v\u00f4 t\u00ecnh thay \u0111\u1ed5i.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Tranh-%E2%80%9CMagic-Numbers%E2%80%9D-%E2%80%9CMagic-Strings%E2%80%9D\"><\/span>Tr\u00e1nh &#8220;Magic Numbers&#8221; \/ &#8220;Magic Strings&#8221;<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>&#8220;Magic numbers&#8221; ho\u1eb7c &#8220;magic strings&#8221; l\u00e0 c\u00e1c gi\u00e1 tr\u1ecb literal (nh\u01b0 s\u1ed1 10, chu\u1ed7i &#8220;pending&#8221;) xu\u1ea5t hi\u1ec7n tr\u1ef1c ti\u1ebfp trong code m\u00e0 kh\u00f4ng c\u00f3 gi\u1ea3i th\u00edch r\u00f5 r\u00e0ng v\u1ec1 \u00fd ngh\u0129a c\u1ee7a ch\u00fang. \u0110\u00e2y l\u00e0 m\u1ed9t &#8220;code smell&#8221; &#8211; d\u1ea5u hi\u1ec7u c\u1ee7a code c\u00f3 th\u1ec3 c\u00f3 v\u1ea5n \u0111\u1ec1.<\/p>\n<p>V\u00ed d\u1ee5 t\u1ec7 (d\u00f9ng magic number):<\/p>\n<pre><code class=\"language-plaintext\">if (userRole === 1) { \/\/ S\u1ed1 1 n\u00e0y c\u00f3 ngh\u0129a l\u00e0 g\u00ec? Admin? Guest?\r\n  \/\/ Do something for admin?\r\n}\r\nfor (let i = 0; i &lt; 86400; i++) { \/\/ 86400 l\u00e0 g\u00ec? S\u1ed1 gi\u00e2y trong ng\u00e0y?\r\n  \/\/ Do something every second\r\n}\r\n<\/code><\/pre>\n<p>V\u00ed d\u1ee5 t\u1ed1t h\u01a1n (d\u00f9ng h\u1eb1ng s\u1ed1 k\u00fd hi\u1ec7u):<\/p>\n<pre><code class=\"language-plaintext\">const ADMIN_ROLE = 1;\r\nconst SECONDS_IN_A_DAY = 86400;\r\n\r\nif (userRole === ADMIN_ROLE) {\r\n  \/\/ R\u00f5 r\u00e0ng l\u00e0 ki\u1ec3m tra vai tr\u00f2 Admin\r\n}\r\nfor (let i = 0; i &lt; SECONDS_IN_A_DAY; i++) {\r\n  \/\/ R\u00f5 r\u00e0ng l\u00e0 l\u1eb7p qua s\u1ed1 gi\u00e2y trong m\u1ed9t ng\u00e0y\r\n}\r\n<\/code><\/pre>\n<p>Lu\u00f4n c\u1ed1 g\u1eafng thay th\u1ebf c\u00e1c magic number\/string b\u1eb1ng c\u00e1c h\u1eb1ng s\u1ed1 c\u00f3 t\u00ean g\u1ecdi \u00fd ngh\u0129a. \u0110i\u1ec1u n\u00e0y l\u00e0m code d\u1ec5 hi\u1ec3u v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n r\u1ea5t nhi\u1ec1u.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ket-luan-Tam-quan-trong-cua-Hang-so\"><\/span>K\u1ebft lu\u1eadn: T\u1ea7m quan tr\u1ecdng c\u1ee7a H\u1eb1ng s\u1ed1<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>H\u1eb1ng s\u1ed1 kh\u00f4ng ch\u1ec9 l\u00e0 m\u1ed9t kh\u00e1i ni\u1ec7m l\u00fd thuy\u1ebft kh\u00f4 khan. Ch\u00fang l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 m\u1ea1nh m\u1ebd gi\u00fap b\u1ea1n vi\u1ebft m\u00e3 ngu\u1ed3n <strong>t\u1ed1t h\u01a1n<\/strong>: r\u00f5 r\u00e0ng h\u01a1n, d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n v\u00e0 \u0111\u00e1ng tin c\u1eady h\u01a1n. Vi\u1ec7c hi\u1ec3u v\u00e0 s\u1eed d\u1ee5ng h\u1eb1ng s\u1ed1 \u0111\u00fang c\u00e1ch l\u00e0 m\u1ed9t b\u01b0\u1edbc ti\u1ebfn quan tr\u1ecdng tr\u00ean con \u0111\u01b0\u1eddng tr\u1edf th\u00e0nh l\u1eadp tr\u00ecnh vi\u00ean gi\u1ecfi.<\/p>\n<p>B\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng h\u1eb1ng s\u1ed1 cho c\u00e1c gi\u00e1 tr\u1ecb kh\u00f4ng \u0111\u1ed5i, b\u1ea1n kh\u00f4ng ch\u1ec9 l\u00e0m cho \u00fd \u0111\u1ed3 c\u1ee7a m\u00ecnh r\u00f5 r\u00e0ng h\u01a1n m\u00e0 c\u00f2n t\u1eadn d\u1ee5ng \u0111\u01b0\u1ee3c s\u1ef1 b\u1ea3o v\u1ec7 c\u1ee7a ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh \u0111\u1ec3 ng\u0103n ng\u1eeba c\u00e1c l\u1ed7i do g\u00e1n l\u1ea1i gi\u00e1 tr\u1ecb kh\u00f4ng mong mu\u1ed1n.<\/p>\n<p>H\u00e3y nh\u1edb quy t\u1eafc \u0111\u01a1n gi\u1ea3n: n\u1ebfu m\u1ed9t gi\u00e1 tr\u1ecb kh\u00f4ng c\u1ea7n thay \u0111\u1ed5i, h\u00e3y khai b\u00e1o n\u00f3 l\u00e0 h\u1eb1ng s\u1ed1. \u00c1p d\u1ee5ng th\u00f3i quen n\u00e0y s\u1ebd gi\u00fap b\u1ea1n ti\u1ebft ki\u1ec7m th\u1eddi gian g\u1ee1 l\u1ed7i, d\u1ec5 d\u00e0ng h\u01a1n trong vi\u1ec7c c\u1eadp nh\u1eadt code v\u00e0 l\u00e0m vi\u1ec7c hi\u1ec7u qu\u1ea3 h\u01a1n trong c\u00e1c d\u1ef1 \u00e1n nh\u00f3m.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Cau-hoi-thuong-gap-ve-Hang-so-FAQ\"><\/span>C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 H\u1eb1ng s\u1ed1 (FAQ)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>D\u01b0\u1edbi \u0111\u00e2y l\u00e0 m\u1ed9t s\u1ed1 c\u00e2u h\u1ecfi ph\u1ed5 bi\u1ebfn m\u00e0 ng\u01b0\u1eddi m\u1edbi h\u1ecdc th\u01b0\u1eddng g\u1eb7p khi t\u00ecm hi\u1ec3u v\u1ec1 h\u1eb1ng s\u1ed1:<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Hang-so-co-bat-buoc-phai-viet-hoa-khong\"><\/span>H\u1eb1ng s\u1ed1 c\u00f3 b\u1eaft bu\u1ed9c ph\u1ea3i vi\u1ebft hoa kh\u00f4ng?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Kh\u00f4ng b\u1eaft bu\u1ed9c v\u1ec1 m\u1eb7t k\u1ef9 thu\u1eadt trong h\u1ea7u h\u1ebft c\u00e1c ng\u00f4n ng\u1eef (tr\u00ecnh bi\u00ean d\u1ecbch\/th\u00f4ng d\u1ecbch v\u1eabn hi\u1ec3u). Tuy nhi\u00ean, vi\u1ebft hoa to\u00e0n b\u1ed9 (v\u00ed d\u1ee5: <code>MAX_USERS<\/code>) l\u00e0 m\u1ed9t <strong>quy \u01b0\u1edbc r\u1ea5t m\u1ea1nh m\u1ebd<\/strong> \u0111\u01b0\u1ee3c c\u1ed9ng \u0111\u1ed3ng l\u1eadp tr\u00ecnh vi\u00ean ch\u1ea5p nh\u1eadn r\u1ed9ng r\u00e3i. Vi\u1ec7c tu\u00e2n th\u1ee7 quy \u01b0\u1edbc n\u00e0y gi\u00fap t\u0103ng t\u00ednh d\u1ec5 \u0111\u1ecdc v\u00e0 d\u1ec5 nh\u1eadn bi\u1ebft h\u1eb1ng s\u1ed1.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Gia-tri-cua-hang-so-duoc-luu-o-dau-trong-bo-nho\"><\/span>Gi\u00e1 tr\u1ecb c\u1ee7a h\u1eb1ng s\u1ed1 \u0111\u01b0\u1ee3c l\u01b0u \u1edf \u0111\u00e2u trong b\u1ed9 nh\u1edb?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0110i\u1ec1u n\u00e0y ph\u1ee5 thu\u1ed9c v\u00e0o ng\u00f4n ng\u1eef v\u00e0 tr\u00ecnh bi\u00ean d\u1ecbch\/th\u00f4ng d\u1ecbch. \u0110\u1ed1i v\u1edbi c\u00e1c h\u1eb1ng s\u1ed1 \u0111\u01a1n gi\u1ea3n (nh\u01b0 s\u1ed1, chu\u1ed7i ng\u1eafn), tr\u00ecnh bi\u00ean d\u1ecbch c\u00f3 th\u1ec3 thay th\u1ebf tr\u1ef1c ti\u1ebfp gi\u00e1 tr\u1ecb v\u00e0o m\u00e3 m\u00e1y (t\u1ed1i \u01b0u h\u00f3a). Trong c\u00e1c tr\u01b0\u1eddng h\u1ee3p kh\u00e1c, ch\u00fang c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef trong m\u1ed9t v\u00f9ng nh\u1edb ch\u1ec9 \u0111\u1ecdc (read-only memory segment) c\u1ee7a ch\u01b0\u01a1ng tr\u00ecnh. B\u1ea1n kh\u00f4ng c\u1ea7n qu\u00e1 lo l\u1eafng v\u1ec1 chi ti\u1ebft n\u00e0y khi m\u1edbi b\u1eaft \u0111\u1ea7u.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"const-trong-JavaScript-va-final-trong-Java-khac-nhau-khong\"><\/span><code>const<\/code> trong JavaScript v\u00e0 <code>final<\/code> trong Java kh\u00e1c nhau kh\u00f4ng?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>C\u00f3 m\u1ed9t s\u1ed1 kh\u00e1c bi\u1ec7t nh\u1ecf:<\/p>\n<ul>\n<li><strong>Kh\u1edfi t\u1ea1o:<\/strong> <code>const<\/code> (JS) ph\u1ea3i \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o gi\u00e1 tr\u1ecb ngay khi khai b\u00e1o. <code>final<\/code> (Java) c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o l\u00fac khai b\u00e1o ho\u1eb7c trong constructor (n\u1ebfu l\u00e0 bi\u1ebfn instance).<\/li>\n<li><strong>Ph\u1ea1m vi:<\/strong> <code>const<\/code> (JS) c\u00f3 ph\u1ea1m vi kh\u1ed1i (block scope). <code>final<\/code> (Java) tu\u00e2n theo quy t\u1eafc ph\u1ea1m vi th\u00f4ng th\u01b0\u1eddng c\u1ee7a Java (ph\u1ee5 thu\u1ed9c v\u00e0o n\u01a1i khai b\u00e1o &#8211; class, method, block).<\/li>\n<li><strong>\u0110\u1ed1i t\u01b0\u1ee3ng\/M\u1ea3ng:<\/strong> C\u1ea3 hai \u0111\u1ec1u ch\u1ec9 l\u00e0m cho <i>tham chi\u1ebfu<\/i> tr\u1edf n\u00ean b\u1ea5t bi\u1ebfn. N\u1ed9i dung b\u00ean trong \u0111\u1ed1i t\u01b0\u1ee3ng\/m\u1ea3ng v\u1eabn c\u00f3 th\u1ec3 thay \u0111\u1ed5i (tr\u1eeb khi b\u1ea3n th\u00e2n \u0111\u1ed1i t\u01b0\u1ee3ng l\u00e0 b\u1ea5t bi\u1ebfn).<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Co-the-tao-hang-so-la-mot-doi-tuong-object-khong\"><\/span>C\u00f3 th\u1ec3 t\u1ea1o h\u1eb1ng s\u1ed1 l\u00e0 m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng (object) kh\u00f4ng?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>C\u00f3 th\u1ec3. Nh\u01b0 \u0111\u00e3 \u0111\u1ec1 c\u1eadp \u1edf tr\u00ean, khi b\u1ea1n khai b\u00e1o m\u1ed9t h\u1eb1ng s\u1ed1 l\u00e0 \u0111\u1ed1i t\u01b0\u1ee3ng (v\u00ed d\u1ee5: <code>const user = { name: \"Alice\" };<\/code> trong JS), \u0111i\u1ec1u \u0111\u00f3 c\u00f3 ngh\u0129a l\u00e0 bi\u1ebfn <code>user<\/code> s\u1ebd lu\u00f4n lu\u00f4n tham chi\u1ebfu \u0111\u1ebfn <i>c\u00f9ng m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng<\/i> \u0111\u00f3. B\u1ea1n kh\u00f4ng th\u1ec3 g\u00e1n <code>user = anotherObject;<\/code>.<\/p>\n<p>Tuy nhi\u00ean, b\u1ea3n th\u00e2n \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u00f3 th\u01b0\u1eddng l\u00e0 <i>kh\u1ea3 bi\u1ebfn<\/i> (mutable), ngh\u0129a l\u00e0 b\u1ea1n v\u1eabn c\u00f3 th\u1ec3 thay \u0111\u1ed5i c\u00e1c thu\u1ed9c t\u00ednh c\u1ee7a n\u00f3 (v\u00ed d\u1ee5: <code>user.name = \"Bob\";<\/code>). N\u1ebfu mu\u1ed1n c\u1ea3 \u0111\u1ed1i t\u01b0\u1ee3ng ho\u00e0n to\u00e0n b\u1ea5t bi\u1ebfn, b\u1ea1n c\u1ea7n s\u1eed d\u1ee5ng c\u00e1c k\u1ef9 thu\u1eadt ho\u1eb7c th\u01b0 vi\u1ec7n b\u1ed5 sung (v\u00ed d\u1ee5: <code>Object.freeze()<\/code> trong JS ho\u1eb7c c\u00e1c th\u01b0 vi\u1ec7n immutable).<\/p>\n<div style=\"background-color: #e6f2ff; border-radius: 10px; padding: 20px; margin: 20px 0; border: 1px solid #b3d9ff;\">\n<p>Khi \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n \u0111\u00e3 ho\u00e0n thi\u1ec7n v\u1edbi nh\u1eefng \u0111o\u1ea1n code t\u1ed1i \u01b0u (nh\u01b0 vi\u1ec7c s\u1eed d\u1ee5ng h\u1eb1ng s\u1ed1 hi\u1ec7u qu\u1ea3), vi\u1ec7c l\u1ef1a ch\u1ecdn m\u1ed9t n\u1ec1n t\u1ea3ng v\u1eadn h\u00e0nh \u1ed5n \u0111\u1ecbnh l\u00e0 b\u01b0\u1edbc ti\u1ebfp theo. D\u1ecbch v\u1ee5 <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/interdata.vn\/thue-hosting\/\">thu\u00ea Hosting<\/a> t\u1ea1i InterData cung c\u1ea5p m\u00f4i tr\u01b0\u1eddng t\u1ed1c \u0111\u1ed9 cao, \u0111\u00e1ng tin c\u1eady cho website c\u1ee7a b\u1ea1n nh\u1edd ph\u1ea7n c\u1ee9ng chuy\u00ean d\u1ee5ng th\u1ebf h\u1ec7 m\u1edbi.<\/p>\n<p>N\u1ebfu d\u1ef1 \u00e1n \u0111\u00f2i h\u1ecfi nhi\u1ec1u t\u00e0i nguy\u00ean v\u00e0 ki\u1ec3m so\u00e1t s\u00e2u h\u01a1n, b\u1ea1n c\u00f3 th\u1ec3 c\u00e2n nh\u1eafc <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/interdata.vn\/thue-vps\/\">thu\u00ea VPS gi\u00e1 r\u1ebb<\/a> v\u1edbi c\u1ea5u h\u00ecnh m\u1ea1nh m\u1ebd. Ho\u1eb7c \u0111\u1ec3 \u0111\u1ea1t \u0111\u01b0\u1ee3c s\u1ef1 linh ho\u1ea1t v\u00e0 kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng cao c\u1ea5p, d\u1ecbch v\u1ee5 <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/interdata.vn\/cloud-server\/\">thu\u00ea Cloud Server gi\u00e1 r\u1ebb<\/a> d\u1ef1a tr\u00ean c\u00f4ng ngh\u1ec7 \u1ea3o h\u00f3a ti\u00ean ti\u1ebfn l\u00e0 l\u1ef1a ch\u1ecdn l\u00fd t\u01b0\u1edfng, \u0111\u1ea3m b\u1ea3o dung l\u01b0\u1ee3ng t\u1ed1i \u01b0u v\u00e0 b\u0103ng th\u00f4ng cao.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>B\u1ea1n m\u1edbi h\u1ecdc l\u1eadp tr\u00ecnh v\u00e0 th\u1eafc m\u1eafc &#8220;h\u1eb1ng s\u1ed1 l\u00e0 g\u00ec&#8221; hay &#8220;constant&#8221; ngh\u0129a l\u00e0 sao? B\u00e0i vi\u1ebft n\u00e0y s\u1ebd gi\u1ea3i \u0111\u00e1p c\u1eb7n k\u1ebd! Ch\u00fang ta s\u1ebd c\u00f9ng t\u00ecm hi\u1ec3u \u0111\u1ecbnh ngh\u0129a h\u1eb1ng s\u1ed1, l\u00fd do v\u00ec sao n\u00ean d\u00f9ng ch\u00fang \u0111\u1ec3 code t\u1ed1t h\u01a1n, v\u00e0 c\u00e1ch khai b\u00e1o trong c\u00e1c ng\u00f4n ng\u1eef ph\u1ed5<\/p>\n","protected":false},"author":2,"featured_media":27107,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[140],"tags":[],"class_list":["post-27097","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-lap-trinh"],"_links":{"self":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/27097","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/comments?post=27097"}],"version-history":[{"count":3,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/27097\/revisions"}],"predecessor-version":[{"id":31306,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/27097\/revisions\/31306"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media\/27107"}],"wp:attachment":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media?parent=27097"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/categories?post=27097"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/tags?post=27097"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}