השוואת מחרוזות ב- JAVA

לא אמרתי שאין להם חסרונות

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

voguemaster

New member
תראה העניין הוא כזה

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

DNile

New member
סתם שאלה,

מישהו מכם באמת נתקל בקטע קוד בC++ שעושה שימוש מאוד לא נבון באופרטורים? (תתעלמו מאופרטור ! על streams בSTL, אני דווקא חושב שזה די אינטואיטיבי).
 

voguemaster

New member
אופרטור + או =+

קרו מספיק מקרים מעולם שהשתמשו בו לא נכון. אם אתה לא כותב אותו טוב אתה מקבל יותר מדי קריאות ל-ctor ו-dtor.
 

Zack DA

New member
למשל, מקרה שבו יש לך טיפוס כלשהו

בעל כמה ערכים, נגיד, ה- data עצמו ומספר סידורי index ועוד איזה ערך hash כזה שהוא קיבל. ופתאום מישהו מגדיר על הדבר הזה [], שיוצרים עטיפה של מערך מעל הערכים האלה, כך נגיד:
nyVar[1] => myVar.index​
מאוד לא אינטואיטיבי. ופתאום יש חריגות מהערכים האלה, ושימוש לא נכון בזה, והכל מתחיל מניסיון שהוא אמנם נחמד ועם כוונות טובות אבל יוצר באגים.
 

vinney

Well-known member
למה לעזעזל שמישהו יעשה כזה דבר?

לעשות אינקסציה על memberים של מחלקה? הדבר הכי טיפשי בעולם...
 

Zack DA

New member
כמו שהבחור כאן אמר (לא בצדק לדעתי)

"לחסוך" בזמן פיתוח. אל תנסה למצוא לזה הצדקות, כי אין.
 
הרבה יותר ארוכה ומסורבלת.

וזה לא שורה אחת כזאת, זה הרבה שורות כאלה (בכל מקום שבו רוצים לעשות פעולות מתמטיות כאלה ואחרות).
 

Zack DA

New member
זה לא נקרא "בזבוז זמן פיתוח"

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

IP yuval

New member
למה מפתחים יותר מהר עם Java?

בגלל הAPI העשיר שלה, או שיש סיבות אחרות?
 

Zack DA

New member
ה- API הוא סיבה טובה, אבל יש

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

Zack DA

New member
השאלה היא מה אתה רוצה לבדוק.

בהרבה מקרים אתה דווקא תרצה להשתמש ב- ==. אם אתה מעוניין רק להשוות את הערך, יש להמנע כמעט תמיד מ- ==.
 

Zack DA

New member
יש הרבה מצבים ודוגמאות.

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

Zack DA

New member
צריך לדעת לתכנת נכון ב- java,

זה בוודאי לא עושה אותה שפה פחות טובה משפה אחרת.
 
למעלה