09-02-2007, 02:55
|
|
|
חבר מתאריך: 25.08.03
הודעות: 9,114
|
|
משוב
בתגובה להודעה מספר 1 שנכתבה על ידי Silver Strike שמתחילה ב "[javascript] מערכת ניהול עוגיות - (פרסום הקוד)"
אמרתי לך "מחר", אך זה נמשך למחק, מחר ומחר... אז איכשהו החלטתי שהגיע סוף סוף הזמן לעשות לזה זמן
ראשית, תודה רבה, זה יכול מאד להועיל להרבה שיעזרו בזה וכמובן גם להרבה משתמשים פאסיביים שאפילו לא תדע.
גם סחטין על ההסברים המפורטים
לרוב לא יוצא לי להתעסק עם עוגיות בצד הלקוח, אבל זה כנראה ידרש מתי שהוא ובעבר, במערכת שעשיתי בעבר על הדיסק וכמדומני שהראתי לך, השתמשתי שם כמובן בקוד JS לשמור ולאחזר מידע אל ומהעוגיות, אבל זה היה מזמן כך שאני כבר לא זוכר את כל התקלות והמסקנות שהסקתי מנסיוני אז. אז בכל אופן השתמשתי בפונקציות בודדות ולא במחלקה מעולה כמו זה שהצגת.
1. בפונקציה Read השתמשת במערך ובהרבה בדיקות. אני למיטב זכרוני הדליל לא השתמשתי במערך, אך הסתפקתי במספר בדיקות מצומצם. (החלטתי לא להתעצל ולחפש את הקוד המדובר. מצאתי, ריפרתי עליו, ביצעתי שינוי או שניים ואוסיף אותו בעז"ה להלן).
2. אם בכל זאת הבחירה תשאר להשתמש במערך בצורה דומה לזאתי המוצגת במחלקה המדוברת, מדוע לבצע בדיקות על המשתנה sGetNames? הוא הרי משתנה מקומי, כך שבכל מקרה צריך להגדירו בכל פעם מחדש (תקן אותי עם טעיתי, ואני כמובן לא מתכוון לאופן שבו המשתנה יוצהר במרווח הגולבלי, כיון שזה כבר לא יהיה חלק ישיר מהמחלקה).
3. בנוסף בבדיקה בלולאה, נראה לי מיותר לעשות 2-3 בדיקות, במיוחד שאפשר ליצור את המערך באמצעות split עם המחרוזת "; " (התו נקודה פסיק ולאחריו תו רווח - בדקתי באיכספלורר 6 וכמובן בשועל, בשניהם לא נראתה בעיה להשתמש ביותר מתו אחד) ואז תמיד לבצע בדיקה אחת - האם הערך שווה ל-0.
4. את השמת הערך למשתנה iGetPos כדאי לבצע בתוך הבלוק של התנאי, כיון שזה סתם בזבוז משאבים לקרוא לשיטה search ללא צורך, כיון שבהרבה מקרים כלל לא מדובר עדיין באיטריצה של העוגיה המבוקשת. (והגם שמדובר בבזבוז מאד קטן, בכל זאת הקו הזה לדעתי צריך להיות קו מנחה בכתיבת כל קוד שהוא).
על 2 השיטות הנותרות אין לי אף הערה, מחלקה מעולה
קוד:
function getCookVal(name)
{
var pos, pos2, cook=document.cookie;
if(cook.indexOf(name + '=') == 0)
pos = cook.indexOf(name + '=');
else
pos = cook.indexOf('; ' + name + '=');
if(pos == (-1))
return false;
pos += name.length + 1
pos2 = cook.indexOf(';', pos);
if(pos2 != (-1))
cook = cook.substring(pos, pos2);
else
cook = cook.substring(pos);
return cook;
}
נערך לאחרונה ע"י ישראל K בתאריך 09-02-2007 בשעה 03:13.
|