Artwork

iteration podcast, John Jacob, and JP Sio - Web Developers द्वारा प्रदान की गई सामग्री. एपिसोड, ग्राफिक्स और पॉडकास्ट विवरण सहित सभी पॉडकास्ट सामग्री iteration podcast, John Jacob, and JP Sio - Web Developers या उनके पॉडकास्ट प्लेटफ़ॉर्म पार्टनर द्वारा सीधे अपलोड और प्रदान की जाती है। यदि आपको लगता है कि कोई आपकी अनुमति के बिना आपके कॉपीराइट किए गए कार्य का उपयोग कर रहा है, तो आप यहां बताई गई प्रक्रिया का पालन कर सकते हैं https://hi.player.fm/legal
Player FM - पॉडकास्ट ऐप
Player FM ऐप के साथ ऑफ़लाइन जाएं!

Encapsulation

39:54
 
साझा करें
 

Manage episode 236757437 series 1900125
iteration podcast, John Jacob, and JP Sio - Web Developers द्वारा प्रदान की गई सामग्री. एपिसोड, ग्राफिक्स और पॉडकास्ट विवरण सहित सभी पॉडकास्ट सामग्री iteration podcast, John Jacob, and JP Sio - Web Developers या उनके पॉडकास्ट प्लेटफ़ॉर्म पार्टनर द्वारा सीधे अपलोड और प्रदान की जाती है। यदि आपको लगता है कि कोई आपकी अनुमति के बिना आपके कॉपीराइट किए गए कार्य का उपयोग कर रहा है, तो आप यहां बताई गई प्रक्रिया का पालन कर सकते हैं https://hi.player.fm/legal

Episode 6 - More Code Examples

  • Drawing from Chapter 7 - Encapsulation

A weekly podcast about programming, development, and design through the lens of amazing books, chapter-by-chapter.

Encapsulate Record (162)

var organization = { name: "JP Sio", country: "USA" }; 

becomes ⬇️

class Organization { constructor(data) { this._name = data.name; this._country = data.country; } get name() { return this._name; } set name(arg) { this._name = arg; } get country() { return this._country; } set country(arg) { this._country = arg; } } 
  • you can hide what is stored and provide methods
  • consumer of class Organization doesn't need to know / care which is stored and which is calculated
  • nice getter and setter methods
  • makes it easier to refactor -> can hide implementation of internals and update the internals while keeping the same external interface

Encapsulate Collection (170)

class Person { get courses() { return this._courses; } set courses(aList) { this._courses = aList; } } 

becomes ⬇️

class Person { get courses() { return this._courses.slice(); } addCourse(aCourse) { /*...*/ } } 

Replace Primative with Object (174)

orders.filter(0 => "high" === o.priority || "rush" === o.priority) 

becomes ⬇️

orders.filter(o => o.priority.higherThan(new Priority("normal"))); 
  • this goes back to "Primitive Obsession"
  • programmers are often hesitant to create their own types and rely only on primitives. i.e. representing a phone number as a string instead of as it's own type

A telephone number may be represented as a string for a while, but later it will need special behavior for formatting, extracting the area code, and the like

  • create a new class for that bit of data
  • at first, the class does very little. in fact it probably only wraps a primitive
  • but now you have a place to put behavior specific to its needs

Inline Function (115) 🥴

Sometimes it's better to not try to split things apart, sometimes it just complicates things.

// before refactor: function getItemPrice(item) { if (itemOnSale(item) == true) { return item.price - 5 } else { return item.price } }; function itemOnSale(product) { if (product.onSale == true) { return true; } else { return false; } }; let original = getItemPrice(sweatshirt); // after refactor: function newGetItemPrice(item) { if (item.onSale == true) { return item.price - 5 } else { return item.price } }; 

Extract Class (182) 🥴

  • Talk through HUGE applicant model (in Ruby)
  • Broke this into child objects
    • Applicant Health History
    • Applicant Habits
    • Applicant Lifestyle
    • Applicant Method
    • Applicant Legal Release

Picks

  • JP: None :(
  • John: Quad Lock phone mount - bikes
  continue reading

78 एपिसोडस

Artwork

Encapsulation

iteration

96 subscribers

published

iconसाझा करें
 
Manage episode 236757437 series 1900125
iteration podcast, John Jacob, and JP Sio - Web Developers द्वारा प्रदान की गई सामग्री. एपिसोड, ग्राफिक्स और पॉडकास्ट विवरण सहित सभी पॉडकास्ट सामग्री iteration podcast, John Jacob, and JP Sio - Web Developers या उनके पॉडकास्ट प्लेटफ़ॉर्म पार्टनर द्वारा सीधे अपलोड और प्रदान की जाती है। यदि आपको लगता है कि कोई आपकी अनुमति के बिना आपके कॉपीराइट किए गए कार्य का उपयोग कर रहा है, तो आप यहां बताई गई प्रक्रिया का पालन कर सकते हैं https://hi.player.fm/legal

Episode 6 - More Code Examples

  • Drawing from Chapter 7 - Encapsulation

A weekly podcast about programming, development, and design through the lens of amazing books, chapter-by-chapter.

Encapsulate Record (162)

var organization = { name: "JP Sio", country: "USA" }; 

becomes ⬇️

class Organization { constructor(data) { this._name = data.name; this._country = data.country; } get name() { return this._name; } set name(arg) { this._name = arg; } get country() { return this._country; } set country(arg) { this._country = arg; } } 
  • you can hide what is stored and provide methods
  • consumer of class Organization doesn't need to know / care which is stored and which is calculated
  • nice getter and setter methods
  • makes it easier to refactor -> can hide implementation of internals and update the internals while keeping the same external interface

Encapsulate Collection (170)

class Person { get courses() { return this._courses; } set courses(aList) { this._courses = aList; } } 

becomes ⬇️

class Person { get courses() { return this._courses.slice(); } addCourse(aCourse) { /*...*/ } } 

Replace Primative with Object (174)

orders.filter(0 => "high" === o.priority || "rush" === o.priority) 

becomes ⬇️

orders.filter(o => o.priority.higherThan(new Priority("normal"))); 
  • this goes back to "Primitive Obsession"
  • programmers are often hesitant to create their own types and rely only on primitives. i.e. representing a phone number as a string instead of as it's own type

A telephone number may be represented as a string for a while, but later it will need special behavior for formatting, extracting the area code, and the like

  • create a new class for that bit of data
  • at first, the class does very little. in fact it probably only wraps a primitive
  • but now you have a place to put behavior specific to its needs

Inline Function (115) 🥴

Sometimes it's better to not try to split things apart, sometimes it just complicates things.

// before refactor: function getItemPrice(item) { if (itemOnSale(item) == true) { return item.price - 5 } else { return item.price } }; function itemOnSale(product) { if (product.onSale == true) { return true; } else { return false; } }; let original = getItemPrice(sweatshirt); // after refactor: function newGetItemPrice(item) { if (item.onSale == true) { return item.price - 5 } else { return item.price } }; 

Extract Class (182) 🥴

  • Talk through HUGE applicant model (in Ruby)
  • Broke this into child objects
    • Applicant Health History
    • Applicant Habits
    • Applicant Lifestyle
    • Applicant Method
    • Applicant Legal Release

Picks

  • JP: None :(
  • John: Quad Lock phone mount - bikes
  continue reading

78 एपिसोडस

Semua episod

×
 
Loading …

प्लेयर एफएम में आपका स्वागत है!

प्लेयर एफएम वेब को स्कैन कर रहा है उच्च गुणवत्ता वाले पॉडकास्ट आप के आनंद लेंने के लिए अभी। यह सबसे अच्छा पॉडकास्ट एप्प है और यह Android, iPhone और वेब पर काम करता है। उपकरणों में सदस्यता को सिंक करने के लिए साइनअप करें।

 

त्वरित संदर्भ मार्गदर्शिका

अन्वेषण करते समय इस शो को सुनें
प्ले