<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: First Kanisorn Sutham</title>
    <description>The latest articles on DEV Community by First Kanisorn Sutham (@heyfirst).</description>
    <link>https://dev.to/heyfirst</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F51248%2Fdb4e6a22-e83d-4bec-b891-a65eeeefdf0f.jpeg</url>
      <title>DEV Community: First Kanisorn Sutham</title>
      <link>https://dev.to/heyfirst</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/heyfirst"/>
    <language>en</language>
    <item>
      <title>1, 2, Refactor! เมื่อไหร่ที่ควร Refactor?</title>
      <dc:creator>First Kanisorn Sutham</dc:creator>
      <pubDate>Sat, 23 Jan 2021 07:16:25 +0000</pubDate>
      <link>https://dev.to/heyfirst/1-2-refactor-refactor-41ob</link>
      <guid>https://dev.to/heyfirst/1-2-refactor-refactor-41ob</guid>
      <description>&lt;p&gt;ช่วงนี้มีโอกาศกลับไปอ่านหนังสือเล่มเก่า ๆ บนตู้หนังสืออย่าง &lt;a href="https://www.oreilly.com/library/view/refactoring-improving-the/9780134757681/"&gt;Refactoring: Improving the Design of Existing Code&lt;/a&gt;&lt;br&gt;
 ของ Martin Fowler&lt;/p&gt;

&lt;p&gt;มันเป็นหนังสือหนึ่งที่หยิบมาอ่านเมื่อไหร่ ก็มักจะได้เห็นมุมมองใหม่ ๆ เสมอ อ่านปีที่แล้ว ก็เห็นอีกแบบ พอทำงานมาปีหนึ่งแล้วหยิบมาอ่าน เราก็จะเห็นอีกแบบ &lt;/p&gt;

&lt;p&gt;ไหนๆ หยิบมาอ่านแล้ว เลยถือโอกาศเล่าให้ฟังกันในหัวข้อเล็ก ๆ เบา ๆ อย่าง &lt;a href="https://en.wikipedia.org/wiki/Rule_of_three_(computer_programming)"&gt;The Rule of Three&lt;/a&gt; กันครับ&lt;/p&gt;

&lt;p&gt;หรือที่หลายคนรู้จักใจ &lt;strong&gt;1, 2, Refactor!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;เริ่มจากอะไรคือ Rule of Three กันก่อน .. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--go5l1PMu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://heyfirst.co/static/d6071749b5de1745696689a59d2fecf7/ae1af/asset-1.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--go5l1PMu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://heyfirst.co/static/d6071749b5de1745696689a59d2fecf7/ae1af/asset-1.webp" alt="Three! (https://unsplash.com/photos/TkoBFUDSqtA)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The Rule of Three
&lt;/h1&gt;

&lt;p&gt;กฏข้อนี้ถูกพูดถึงในหัวข้อ When Should We Refactor? ในหนังสือครับ ผมเลยหยิบเอาส่วนหนึ่งของในหนังสือมาให้อ่านกัน&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Here’s a guideline Don Roberts gave me: The first time you do something, you just do it. The second time you do something similar, you wince at the duplication, but you do the duplicate thing anyway. The third time you do something similar, you refactor.&lt;/p&gt;

&lt;p&gt;Or for those who like baseball: &lt;strong&gt;Three strikes, then you refactor.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;จาก Quote ข้างบน จะอธิบายง่าย ๆ ว่า&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ถ้าเราต้องเขียนโค้ดครั้งแรก ก็แค่เขียนไป&lt;/li&gt;
&lt;li&gt;ถ้าเราต้องเขียนโค้ดแบบเดิม ครั้งนี้เรารู้ตัวนะว่ามัน Duplicate แต่ก็เขียนไปก่อน ไม่จำเป็นต้องทำอะไรตอนนี้&lt;/li&gt;
&lt;li&gt;ถ้าเราต้องเขียนโค้ดแบบเดิม(อีกครั้ง) ครังนี้ให้เรา Refactor โค้ดส่วนนั้นเลย&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ง่ายใช่ไหมครับ ผมสรุปเลยว่ากฏข้อนี้เอาไว้ใช้ตอน &lt;strong&gt;เราไม่แน่ใจว่าตอนนี้เราควร Refactor โค้ดของเรารึยัง&lt;/strong&gt; ถ้าจังหวะไหนที่ไม่มั่นใจขึ้นมา ให้นับ 1, 2, Refactor ได้เลยครับ&lt;/p&gt;

&lt;h1&gt;
  
  
  Beyond The Rule of three
&lt;/h1&gt;

&lt;p&gt;ความคิดเห็นส่วนตัวของผม กฏ Rule of Three นั้นทำให้เราเห็นว่าการมี Duplicate Code มันถือว่ายังโอเคนะ ถ้าไม่ซ้ำกันมาก หรือตราบเท่าที่มันยังเข้าใจง่ายอยู่ &lt;/p&gt;

&lt;p&gt;แต่เมื่อใดก็ตามที่รู้สึกว่า มันเริ่มซ้ำละ ถ้ามันมี 3 ครั้ง มันอาจจะมีครั้้งที่ 4 ฉะนั้นควร Refactor มันซะตอนนี้เลย&lt;/p&gt;

&lt;p&gt;แต่ทุกอย่างที่กล่าวมาด้านบนมันก็แค่ Principle และจริง ๆ บางครั้งสำหรับผม เราไม่จำเป็นต้อง apply มันทุก ๆ ครั้งก็ได้&lt;/p&gt;

&lt;p&gt;เช่น เราเห็นแล้วว่ามันซ้ำกัน 3 ครั้ง แต่เราไม่รู้ว่าจะ Refactor มันออกมาแบบไหนดี / เราจะแยกมันออกมาเป็น Function แต่ไม่รู้จะตั้งชื่อ Function ใหม่ออกมาว่ายังไงดี&lt;/p&gt;

&lt;p&gt;ถ้าเกิดเป็นแบบนั้น เป็นผมจะปล่อยมันไปก่อนนะ อาจจะแค่ใส่ Comment ทิ้งไว้ให้พอจำได้ ถึงจุดหนึ่งเมื่อมันมีครั้งที่ 4 ค่อยกลับมาคิดก็ไม่สาย หรือกลับมาคิดตอนที่เรามี Context มากกว่านี้แทน ดีกว่าฝืนทำมันไป&lt;/p&gt;

&lt;p&gt;เพราะจุดประสงค์ของ Refactor ทำให้เราเข้าใจโค้ดได้ง่ายขึ้น หาใช่ซับซ้อนกว่าเดิมนั่นเอง&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Duplication is far cheaper than the wrong abstraction”&lt;/p&gt;

&lt;p&gt;– Sandi Metz, &lt;a href="https://www.youtube.com/watch?v=8bZh5LMaSmE&amp;amp;feature=youtu.be"&gt;All the little things&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ueXu6a8F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://heyfirst.co/static/40dd0dcc658ad334d7fd61d78265bb57/ae1af/asset-2.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ueXu6a8F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://heyfirst.co/static/40dd0dcc658ad334d7fd61d78265bb57/ae1af/asset-2.webp" alt="Good! (https://unsplash.com/photos/3KEFp35FVB0)"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>refactoring</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Do we need Regex?</title>
      <dc:creator>First Kanisorn Sutham</dc:creator>
      <pubDate>Mon, 01 Jun 2020 04:59:24 +0000</pubDate>
      <link>https://dev.to/heyfirst/do-we-need-regex-25h6</link>
      <guid>https://dev.to/heyfirst/do-we-need-regex-25h6</guid>
      <description>&lt;p&gt;My question is "Do we need &lt;strong&gt;regex&lt;/strong&gt;?".&lt;/p&gt;

&lt;p&gt;Some people use &lt;strong&gt;regex&lt;/strong&gt; and said&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It's useful! Short and easy to understand. Only one pattern can show you want to get"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;but some people don't use &lt;strong&gt;regex&lt;/strong&gt; because they said&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It's over engineer, Sometime just manipulate string. simple method like &lt;code&gt;.split&lt;/code&gt; &lt;code&gt;.substring&lt;/code&gt; is enough. And easier to read the logic and understand" &lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;I slightly agree with &lt;strong&gt;second opinion&lt;/strong&gt; because developer know the basic of string method and basic loop/condition.&lt;/p&gt;

&lt;p&gt;So what do you all think about it, people?  &lt;/p&gt;

&lt;p&gt;please share 🙏🏻&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
  </channel>
</rss>
