עבור לתוכן

design patterns

Featured Replies

פורסם

שוב, השאלה היא מי משתמש בהם, ולמה הוא צריך לקבל טיפוסים שונים. מה זה בכלל Query?

פורסם
  • מחבר

query זה שאילתא שאני מריץ על עץ (אינדקס) שאני יוצר בעצמי - כל עלה בעץ מכיל רשימה של קישורים מסוגים שונים.

ישנם סוגים שונים של שאילתאות - למשל שאילתא שאני בונה בregex ושאילתות מורכבות יותר שאני יכול לעשות עם רשימת תנאים.

מי משתמש בזה? בתאוריה, זה אמור להיות מספיק גנרי ע"מ שכל רכיב שירצה ליצור אינדקס של כל סוג טקסט ואחרי זה לחפש עליו בשיטות שונות יוכלו להשתמש בdllים הללו.

בתאכלס, רכיב שאני אכתוב ע"מ לעטוף את זה, אז אפשר להגיד רק אני.

פורסם

האם אותו עץ יכול להכיל סוגים שונים של שאילתות?

פורסם

למה שלא תיצור מחלקה חדשה שתייצג תשובה של שאילתא ואז כל השאילתות שלך יחזירו את אותו הטיפוס.

פתרת את הכאב ראש כאן והעברת אותו למקום אחר :)

פורסם
  • מחבר

העץ הוא יחסית גנרי, השאילתא זה פשוט צורות שונות להביא ממנו נתונים.

וכן נראה לי שאני אחזיר טיפוס של results וזהו ויוסיף לו פשוט פונקציה שתחזיר באיזה מהתוצאות להשתמש.

פורסם

די מפתיע האמת שC# בכלל נותנת לך להחזיר טיפוס שונה, זה no no רציני שאתה מתעסק עם static typing .

עד כמה שאני יודע java ו C++ לא יתנו לך.

השאלה היא מה אתה עושה עם הערך מיד כשהוא חוזר, כלומר מה הערך עושה יודע לעשות ולא איך הוא ממומש.

אם הקוד שלך רק מעביר אותו ממקום למקום, אתה יכול חופשי לעטוף אותו. זה די נפוץ האמת, הנה דוגמה לא רעה:

http://developer.qt.nokia.com/doc/qt-4.8/qvariant.html

אם אתה עושה את אותם פעולות ב80% מהמקרים אתה רוצה לבנות

interface (ואני מתכוון interface אמיתי, לא מעטפת).

אם יש לך כזה קקה:



result = Query.execute()


if type(result) is ComplexQuery:
doSomething(result)
else:
doSomethingCompletelyDifferent(result)

אתה בבעיה, כי יש לך 2 פעולות שונות לחלוטין שבמקרה חולקות אותו שם. תשקול לעשות refactor

לכל העניין. אולי להפריד את exec מ query ואז ב doSomething תוכל לבחור אובייקט exec מתאים

או שתוכל להזריק אחד. בכל מקרה, אתה רואה את הקוד, אתה תדע טוב יותר. אני לגמרי זורק פה ניחושים...

העניין הוא שאין פה נכון לא נכון, זה עלות VS תועלת, אתה לא חייב למצוא את הפתרון המושלם.

אתה צריך אחד שעובד מספיק טוב. זה לא בטון, אם אתה עושה החלטות חכמות בנוגע לארכטקטורה

עצמה, אתה תמיד יכול לעשות refactor. ותאמין לי למדתי את זה בדרך הקשה :).

כי זה בתכלס מה ש OOP קונה לך (בתאוריה). החופש לעשות טעויות מקומיות encapsulation AKA

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים