𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁లో 𝗙𝗮𝗰𝘁𝗼𝗿𝘆 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀 మరియు 𝗖𝗼𝗻𝘀𝘁𝗿𝘂𝗰𝘁𝗼𝗿 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀
వస్తువులను (objects) ఒక్కొక్కటిగా సృష్టించడం ఒక తప్పు.
మీరు ప్రతి యూజర్ లేదా క్లాస్మేట్ కోసం మాన్యువల్గా ఒక ఆబ్జెక్ట్ను రాస్తే, మీరు కోడ్ను మళ్ళీ మళ్ళీ రాస్తున్నట్లు అవుతుంది. మీకు 100 మంది యూజర్లు ఉంటే, మీరు అదే లాజిక్ను 100 సార్లు రాయాల్సి ఉంటుంది. దీనివల్ల బగ్స్ (bugs) వచ్చే అవకాశం ఉంది. మీరు అనుకోకుండా తర్వాత ఏదైనా ప్రాపర్టీని మార్చడం వల్ల మీ అప్లికేషన్ పాడైపోయే ప్రమాదం ఉంది.
క్లీన్ కోడ్ రాయడానికి బదులుగా ఈ రెండు పద్ధతులను (patterns) ఉపయోగించండి.
- Factory Functions
ఒక నిజమైన ఫ్యాక్టరీ గురించి ఆలోచించండి. ముడి పదార్థాలు (raw materials) లోపలికి వెళ్తాయి, ఒక తయారైన ఉత్పత్తి (finished product) బయటకు వస్తుంది.
ఒక factory function పారామీటర్లను తీసుకుని, ఒక కొత్త ఆబ్జెక్ట్ను రిటర్న్ చేస్తుంది.
Example:
function classFactory(name) {
return {
reply() {
return `${name} is present`
}
}
}
ప్రయోజనాలు:
- మీరు లాజిక్ను ఒక్కసారి మాత్రమే రాస్తారు.
- ప్రతి కొత్త ఆబ్జెక్ట్ కోసం మీరు అదే ఫంక్షన్ను మళ్ళీ వాడుకోవచ్చు (reuse).
- డేటా సురక్షితంగా ఉంటుంది. 'name' అనేది ఫంక్షన్ స్కోప్ (scope) లోనే ఉంటుంది. మీరు బయట నుండి అనుకోకుండా దానిని మార్చలేరు.
- Constructor Functions
Constructor functions కూడా ఆబ్జెక్ట్లను సృష్టిస్తాయి. ఇవి "new" కీవర్డ్ మరియు "this" కీవర్డ్ను ఉపయోగిస్తాయి. సాధారణంగా (convention ప్రకారం), వీటిని క్యాపిటల్ లెటర్తో ప్రారంభిస్తారు.
Example:
function Classmate(name) {
this.name = name
this.reply = function() {
return `${this.name} is present`
}
}
మీరు "new" ఉపయోగించినప్పుడు, JavaScript మీ కోసం ఈ పనులను చేస్తుంది:
- ఇది ఒక కొత్త ఆబ్జెక్ట్ను సృష్టిస్తుంది.
- దానిని "this" కి అసైన్ చేస్తుంది.
- ఆ ఆబ్జెక్ట్ను ఆటోమేటిక్గా రిటర్న్ చేస్తుంది.
మీకు "return" స్టేట్మెంట్ అవసరం లేదు.
Scaling your code
ఎక్కువ మొత్తంలో డేటాను హ్యాండిల్ చేయడానికి మీరు ఈ పద్ధతులను అర్రేలతో (arrays) కలిపి ఉపయోగించవచ్చు. ప్రతి పేరును విడివిడిగా టైప్ చేసే బదులు, ఒక map ఫంక్షన్ను ఉపయోగించండి.
Example:
const names = ['Kali', 'Andrew', 'Pearl', 'Percy']
const classmates = names.map(name => new Classmate(name))
ఇప్పుడు మీకు ఉపయోగించడానికి సిద్ధంగా ఉన్న ఆబ్జెక్ట్ల జాబితా సిద్ధంగా ఉంది.
Summary:
- పునరావృతం (repetition) కాకుండా ఉండటానికి మాన్యువల్ ఆబ్జెక్ట్ క్రియేషన్ను నివారించండి.
- లాజిక్ను ఎన్క్యాప్సులేట్ (encapsulate) చేయడానికి మరియు డేటాను రక్షించడానికి Factory Functions ఉపయోగించండి.
- ఆటోమేటిక్ ఆబ్జెక్ట్ క్రియేషన్ కోసం "new" కీవర్డ్ను ఉపయోగించడానికి Constructor Functions ఉపయోగించండి.
- ఎల్లప్పుడూ మీ లాజిక్ను ఒక్కసారి మాత్రమే రాసి, దానిని ప్రతిచోటా మళ్ళీ వాడుకోండి.
Source: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb