[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-cats-ngidenet":3,"blog-detail-ngidenet-tips-simple-untuk-simple-code-part-3-satu-level-indentation":20},{"items":4},[5,9,13,17],{"name":6,"slug":7,"count":8},"Digital Marketing","digital-marketing",41,{"name":10,"slug":11,"count":12},"Programming","programming",56,{"name":14,"slug":15,"count":16},"Tips","tips",75,{"name":18,"slug":19,"count":8},"Web Development","web-development",{"id":21,"slug":22,"title":23,"short_text":24,"excerpt":24,"cover":25,"cover_image":25,"cover_alt_text":25,"category":14,"tags":26,"published_at":27,"created_at":28,"full_text":29,"meta_title":25,"meta_description":30,"faqs":31,"images":32,"views_count":33},370,"tips-simple-untuk-simple-code-part-3-satu-level-indentation","Tips simple untuk simple code: part 3. satu level indentation","Agus Yusida April 6, 2016 Part ketiga dari tips membuat kode kamu lebih simple ini adalah bagaimana caranya agar kode yang kamu buat memiliki minimal satu level indentation di dalam fungsi yang kamu b",null,[],"2019-09-19T16:00:00Z","2026-07-14T04:39:34.271433Z","\u003Cimg alt=\"Go to the profile of Agus Yusida\" src=\"http:\u002F\u002F0.gravatar.com\u002Favatar\u002Fc0b0eeb94d5a7fd159a09fd4a506d27b?s=96&amp;d=mm&amp;r=g\"\u002F>  Agus Yusida April 6, 2016\u003Cp>Part ketiga dari tips membuat kode kamu lebih simple ini adalah bagaimana caranya agar kode yang kamu buat memiliki minimal satu level indentation di dalam fungsi yang kamu buat. Kedengarannya  memang susah sih, tapi kita lihat dahulu sample kode di bawah ini.\u003C\u002Fp>\u003Cpre>\u003Ccode>Class BankAccount{\n\tprotected $accounts;\n\tprivate _construct($accounts){\n\t\t$this-&gt;accounts = $accounts;\n\t}\n\tpublic function filterBy($accountType){\n\t\t\u002F\u002F0 level\n\t\t$filtered = [];\n\t\tforeach($this-&gt;accounts as $account){\n\t\t\t\u002F\u002F1 level\n\t\t\tif($account-&gt;type == $accountType){\n\t\t\t\t\u002F\u002F2 level\n\t\t\t\tif($account-&gt;active){\n\t\t\t\t\t\u002F\u002F3 level\n\t\t\t\t\t$filtered[] = $account;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn $filtered;\n\t}\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Pada sample class di atas kita dapat melihat sebuah fungsi yg simple tapi sudah memiliki 3 level indentation dimana kita harus mencoba refactoring kode tersebut sehingga memenuhi rules yaitu 1 level indentation.\u003C\u002Fp>\u003Cp>\u003Cstrong>Work from inside to out.\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp>Akan lebih mudah jika mulai refactoring dari dalam yaitu kita akan refactoing yang ada di dalam foreach.\u003C\u002Fp> \u003Cpre>\u003Ccode>Class BankAccount{\n\tprotected $accounts;\n\tprivate _construct($accounts){\n\t\t$this-&gt;accounts = $accounts;\n\t}\n\tpublic function filterBy($accountType){\n\t\t\u002F\u002F0 level\n\t\t$filtered = [];\n\t\tforeach($this-&gt;accounts as $account){\n\t\t\t\u002F\u002F1 level\n\t\t\tif($account-&gt;type == $accountType &amp;&amp; $account-&gt;active){\n\t\t\t\t\u002F\u002F2 level\n\t\t\t\t$filtered[] = $account;\n\t\t\t}\n\t\t}\n\t\treturn $filtered;\n\t}\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Selanjutnya apa yang kita bisa sederhanakan lagi? Bagaimana jika kita membuat sebuah fungsi baru lagi untuk menghandle semua proses di dalam foreach tersebut?\u003C\u002Fp>\u003Cpre>\u003Ccode>Class BankAccount{\n\tprotected $accounts;\n\tprivate _construct($accounts){\n\t\t$this-&gt;accounts = $accounts;\n\t}\n\tpublic function filterBy($accountType){\n\t\t\u002F\u002F0 level\n\t\t$filtered = [];\n\t\tforeach($this-&gt;accounts as $account){\n\t\t\t\u002F\u002F1 level\n\t\t\tif($this-&gt;isOfType($accountType,$account)){\n\t\t\t\t\u002F\u002F2 level\n\t\t\t\t$filtered[] = $account;\n\t\t\t}\n\t\t}\n\t\treturn $filtered;\n\t}\n\tprivate function isOfType($accountType,$account){\n\t\treturn $account-&gt;type == $accountType &amp;&amp; $account-&gt;active;\n\t}\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Hmm, kita masih memiliki 2 level indentation. Jika kita perhatikan foreach tersebut bisa kita ganti dengan fungsi yang sudah ada di php yaitu array filter. Jadi ayo kita refactoring lagi.\u003C\u002Fp>\u003Cpre>\u003Ccode>Class BankAccount{\n\tprotected $accounts;\n\tprivate _construct($accounts){\n\t\t$this-&gt;accounts = $accounts;\n\t}\n\tpublic function filterBy($accountType){\n\t\t\u002F\u002F0 level\n\t\t$filtered = array_filter($this-&gt;accounts, function($account) use ($accountType)\n\t\t{\n\t\t\t\u002F\u002F1 level\n\t\t\t$this-&gt;isOfType($accountType,$account)\n\t\t});\n\t\treturn $filtered;\n\t}\n\tprivate function isOfType($accountType,$account){\n\t\treturn $account-&gt;type == $accountType &amp;&amp; $account-&gt;active;\n\t}\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Yup, kali ini kita sudah punya 1 level indentation. Sedikit sentuhan akhir bagaimana kita ga usah pakai variable $filtered lagi jadi tinggal return saja array hasilnya.\u003C\u002Fp>\u003Cpre>\u003Ccode>Class BankAccount{\n\tprotected $accounts;\n\tprivate _construct($accounts){\n\t\t$this-&gt;accounts = $accounts;\n\t}\n\tpublic function filterBy($accountType){\n\t\t\u002F\u002F0 level\n\t\treturn array_filter($this-&gt;accounts, function($account) use ($accountType)\n\t\t{\n\t\t\t\u002F\u002F1 level\n\t\t\t$this-&gt;isOfType($accountType,$account)\n\t\t});\n\t}\n\tprivate function isOfType($accountType,$account){\n\t\treturn $account-&gt;type == $accountType &amp;&amp; $account-&gt;active;\n\t}\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Saya kira kode di atas sudah cukup simple dan jika dibandingkan dengan kode saat di awal tentu saja kode akhir ini jauh lebih pendek tapi tetap memiliki fungsi akhir yang sama. Kita lihat hasil akhir dari refactoring kita kali ini dan kalian bisa bandingkan dengan kode sebelumnya.\u003C\u002Fp>Rekomendasi:  Tutorial cara mudah membuat sticky sidebar di website\u003Cp>Tips 1 level indentation ini memang lebih kepada selera masing-masing programmer. Dengan tips ini akan membuat design kode yang kita buat menjadi lebih rapi dan juga bisa meningkatkan kemampuan kode tersebut untuk dibaca oleh programmer lainnya.\u003C\u002Fp>\u003Cblockquote>\u003Cp>Good code can read by computer, but good programmer write code that also can read by human. ~ bcscoder\u003C\u002Fp>\u003C\u002Fblockquote>Please follow and like us:\u003Ca href=\"http:\u002F\u002Fwww.specificfeeds.com\u002Fwidgets\u002FemailSubscribeEncFeed\u002FUmN5cWduWHlmN09VS1JQcFMrLzFJODRBMlMxY3R4RWlzQnFqb2REQlVwRWxodzRTT3NLYTNxQ2FUbzFvSkJTM2hFMU9SOVdWdGNiSlF0N3ZFMjdqR1A0U2VoL0tFYXdjb1JOUnRldUlqd2ZHYU84K2lvQXZ4aHNXQ3hYZ2g2N018RlF5OExKZXdlaW1QWllodDc3c3ZscmliQ1pDaTFBSFdTWUQ3MElieVNIST0=\u002FOA==\u002F\">\u003Cimg src=\"data:image\u002Fgif;base64,R0lGODlhAQABAIAAAAAAAP\u002F\u002F\u002FyH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"\u002F>\u003C\u002Fa>\u003Ca href=\"http:\u002F\u002Ftwitter.com\u002Fshare\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fwww.pinterest.com\u002Fpin\u002Fcreate\u002Fbutton\u002F?url=&amp;media=&amp;description=\">\u003C\u002Fa> Tags: programmer Tips","Agus Yusida April 6, 2016 Part ketiga dari tips membuat kode kamu lebih simple ini adalah bagaimana caranya agar kode yang kamu buat memiliki minimal satu level",[],[],0]