
No problems found.should use string resource. מחרוזת כזו אי אפשר לתרגם, ובמקרה שצריך אותה בכמה מסכים צריך לשכפל אותה. עומדים על האזהרה, לוחצים Alt+Enter ובוחרים Extract string resource.textSize צריך להשתמש ב-SP. יחידת SP מושפעת מהגדרת גודל הטקסט שהמשתמש קבע בטלפון, ו-DP לא. Alt+Enter ובחירה ב-Replace with sp מתקנות את זה.inputType כדי שהמכשיר יציג מקלדת מתאימה, למשל מקלדת לאימייל או מקלדת ספרות לטלפון. עבור שם אדם הוגדר textPersonName, שמציג מקלדת בלי מקש Enter. אפשר לשלב כמה ערכים עם קו אנכי, למשל עם textCapWords, כך שכל מילה מתחילה באות גדולה.unused import) ומשתנה פרטי שאינו בשימוש מסומנים באפור, ופשוט מוחקים אותם. אזהרת field can be converted to a local variable מופיעה על משתנה ברמת המחלקה שבו משתמשים רק בפונקציה אחת, והפעולה Convert to Local מעבירה אותו לפונקציה.File > Settings > Editor > Inspections > Android Lint. לכל בדיקה יש V שמסמן שהיא פעילה, ואפשר לקבוע אם היא תוצג כ-warning או כ-error. יש גם אפשרות להחזיר לברירת המחדל.TODO: נצבעת בכחול ומופיעה בחלונית TODO, אפשר לדלג ביניהן וזה עובד גם ב-XML. כברירת מחדל TODO אינה warning, אבל אפשר להגדיר אותה כך.edit inspection profile settings.Alt+Enter יש גם Disable inspection והשתקות (Suppress). אפשר להשתיק על משתנה או פונקציה ספציפיים, על כל המחלקה (Suppress for class), או לכבות את כל הבדיקות במחלקה (Suppress all inspections for class). המרצה לא ממליץ על כך, כי מאבדים הערות שכדאי לטפל בהן. אם Lint מצביע על בעיה, סביר שהיא אמיתית.Alt+Enter, ולשלוט בחומרה שלהן דרך ההגדרות.הטקסט המלא של הדקות הראשונות בהרצאה «Lint» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בנושא הטיפול בשגיאות אנחנו מגיעים למונח די מעניין שקיים באנדרואיד סטודיו והוא נקרא לינט. לינט זה מנגנון בילד אין בתוך אנדרואיד סטודיו בתוך סביבת הפיתוח שמציין למתכנת כל מיני דברים לא אופטימליים שיש לו בקוד.
אז דבר ראשון מה פירוש המילה לינט? זה נשמע אולי כמו ראשי תיבות של משהו אבל למעשה זה לא ראשי תיבות. זאת מילה באנגלית שהתרגום שלה בעברית זה מוך מוך זה פשוט מאוד סיבי בד כאלה שמתנתקים לפעמים מהבגדים ומוצאים את עצמם בכל מיני מקומות מוזרים לדוגמה על הגוף לדוגמה בתוך מיבש כביסה לפעמים
יש רשת כזאת שתופסת את כל הסיבים האלה ובגדול מוך זה בעצם הסיבים הלא אופטימליים האלה אז המונח הזה עבר להיות משהו לא אופטימלי בקוד שלנו ולינט זה אותו מנגנון שפשוט מציין למתכנת את כל הדברים הלא אופטימליים האלה שהוא מצא.
דבר ראשון בניתי פה איזושהי תוכנית שכל מה שהיא עושה היא מבקשת מהמשתמש להכניס איזשהו שם שם מלא ויש לנו כאן לחצן שאנחנו לוחצים עליו ואנחנו הולכים לראות את השם כאן מוצג במסך דבר ראשון אני רוצה להריץ את התוכנית הזאת ולראות שהיא עובדת כמו שצריך.
אז בואו נריץ אותה, הנה התוכנית רצה, אני נמצא כאן בתיבת טקסט, רושם איזשהו שם, מוישה אופניק, איזושהי דמות מרחוב סומסום, לוחץ על show ואני רואה את השם מוצג כאן והכל עובד כמו שצריך.
אוקיי, מה הקשר למנגנון לינט ולדברים לא אופטימליים? אז אם אנחנו מסתכלים על הקוד שלנו ונתחיל קודם כל עם ה-XML אנחנו יכולים לראות שיש פה כל מיני דברים צהובים כאלה בצד כל הדברים הצהובים האלה זה בעצם מנגנון לינט מתאר לנו כדברים לא אופטימליים בקוד כל דבר צהוב כזה בעצם
מתאר שורה צהובה שרואים אותה כאן לדוגמה הפס הצהוב הזה מתאר את השורה הראשונה הזאת הפס הצהוב השני מתאר את השורה השנייה הזאת, הצהובים האלה שאנחנו רואים פה בלי הפסקה. כאן למעלה אנחנו רואים ריבוע שאומר לנו כמה הערות כאלה קיימות והריבוע הזה אומר לנו יש לנו תשע וורנינגים שנמצאו בקוד.
כל דבר כזה זה וורנינג ויכול להיות גם שזה ארור, ארור לא יהיה בצהוב יהיה באדום. אם אני עכשיו סתם ממציא פה איזושהי פקודה שלא קיימת אז אז אוטומטית אתם רואים שעכשיו יש לי קו אדום וכאן הוא יגיד לי שנמצאו אחד הרור ותשע וורנינגס לא נהיה עד כדי כך לא מדויקים בקוד נישאר עם ורטיקל ובואו נבין
קודם כל למה מנגנון הלינט הזה אמר לנו שהדברים האלה הם לא אופטימליים וכמובן בואו נתקן אותם אז נלך לדבר הראשון והדבר הראשון הוא אומר לנו hardcoded string קודם כל hardcoded זה סרוב בקוד זה מכרוזת או מספר שרשמנו אותו as is בקוד hardcoded string הוא נעלם לי בואו נעלה עליו welcome should use string resource אם אני
עולה על זה אני מקבל בדיוק את אותה הערה כי ומציינת אותו הדבר זאת אותה השורה hardcoded string welcome should use string resource כאשר אנחנו למדנו על כל הנושא של ה-resources ושל ה-string ריסורס ראינו שזה לא נכון באמת להגדיר סטרינג הארד קודד בקוד מפני שאז אנחנו לא יכולים בכלל לתרגם אותה כאשר בעתיד נרצה לתרגם את
האפליקציה לשפות אחרות אין לנו את המחרוזת הזאת מרוכזת במקום אחד אם נרצה בעוד מקום בעוד מסך אולי להציג גם את המחרוזת נצטרך לשכפל אותה וכדומה אז אנחנו כמובן כן רוצים להכניס את המכרוזת הזאת ואת שאר המכרוזות לתוך סטרינג ריסורס.
אז כמובן שאנחנו יכולים לגשת לסטרינג ריסורס ולבנות את המכרוזת שם ואז לתת אותה כאן, אבל מנגנון הלינט מאפשר לנו לטפל בבעיה דרך ההערה הזאת. אנחנו פשוט עומדים שמה, מחכים שהמנורה הזאת תוצג, לוחצים Alt-Enter ואז יש פה את האופציות שמנגנון הלינט מאפשר לנו לבצע.
הראשונה זה אקסטרקט סטרינג ריסורס בואו נלחץ נקרא לה welcome enter ואנחנו רואים שהוא שתה לנו את זה כאן הנה אנחנו רואים את ה-welcome ויותר מזה העלים לנו את ההערה הזאת בואו ניגש ונראה שיש רק שמונה וורנינגים עכשיו בואו בבת אחת נטפל בכל ההערות האלה של המחרוזות Enter your full name, נוציא את זה ל-String resource,
עוד הערה נעלמה לה, Show, אל ת-Enter, נוציא את זה ל-String resource וסיימנו את שלושת המחוזות.
בואו ניגש ונראה, נשארו לנו רק שישה וורנינגים. הדבר הבא, יש לנו פה את היחידות מידע האלה על הטקסט סייז, ויחידות המידע אנחנו רואים 25 dp, מה בדיוק הבעיה?
אם אנחנו מסתכלים על ההערה אנחנו רואים should use SP instead of DP for text sizes ואכן כאשר למדנו על יחידות מידע בתחילת הקורס אז ראינו באמת שDP זה יחידת מידע עבור גדלים ומרחקים אבל לא עבור גדלים של טקסטים.
למה? כי כאשר יש לנו טקסט סייז זה אומר שהיוזר צריך לקרוא אותו ויכול להיות שהיוזר לא רואה כל כך טוב ואז הוא מגדיר בטלפון שהגודל של הטקסט הוא רוצה אותו יותר גדול.
אם אנחנו נגדיר dp זה לא יושפע מההגדרות האישיות של היוזר שהוא הגדיר במכשיר שלו. אולי הטקסט יותר מדי גדול והוא רוצה להגדיר טקסט קטן יותר.
אם אנחנו מגדירים sp אז כמובן שהיחידות מידה האלה מושפעות מהבחירה של הטלפון וגדלות או קטנות בהתאם. לכן עבור גדלים של טקסט כמובן עדיף לנו sp. אז אנחנו יכולים לבוא לפה ולהגדיר sp בעצמנו והנה ההערה נעלמה לה אבל אני מחזיר את זה רגע אנחנו יכולים גם שמנגנון הלינט יסדר את זה בעצמו אלט אנטר והוא אומר לנו replace with sp והוא עשה את זה מגניב חסך לי לכתוב את הs
בעצמי אני רואה שהפכתי להיות קצת עצלן אבל זה כיף שמישהו משלים לי את הקוד אלט אנטר על הdp הזה עוד אנטר והנה הוא סידר לי את הבעיה בואו ניגש לכאן אלט אנטר סדר לי אותו ל-sp איזה כיף מישהו כותב בשבילי את ה-s במקום d סדר לי את זה ואחרון סדר לי אותו ובואו נבדוק ונראה שנשארה לנו הערה אחת הנה היא פה מה הוא רוצה בהערה הזאת בהערה הזאת מה שהוא אומר לנו
זה שיש לנו פה את האדי טקסט אנחנו רואים שהוא צהוב כאן ומה שהוא אומר זה שכשיש לכם אדי טקסט או שיהיה לכם הינט שיגיד למשתמש מה בדיוק להכניס או שיהיה input type ו-input type זה משהו שמציין למכשיר עצמו איזה מקלדת לדוגמה יותר טוב להציג עבור תיבת הקלט הזאת.
לדוגמה אם זה אימייל אז אנחנו רוצים שהוא יציג מקלדת מותאמת יותר לאימייל שיש במקלדת מקש מיוחד עבור השטרודל. לדוגמה אם יש לנו טלפון אז אנחנו רוצים להגיד לו שזה טלפון ואז המקלדת תהיה רק של מספרים, של ספרות ליתר דיוק.
אז בואו ניגש ונגיד לו שהאינפוט טייפ שלנו זה בעצם טקסט person name כי אני רוצה לקבל שם של בן אדם ו-person name זה בעצם input type שאומר שאין לנו enter את מכש ה-enter במקלדת, כי כשאתם מכניסים שם של משתמש אתם לא צריכים ללחוץ enter.
אז הנה יש לנו כאן input type ואז ההערה נעלמה. אגב, אם שמתם לב יש פה כל מיני input types ואנחנו יכולים להגדיר לו כמה ביחד. לדוגמה אם אנחנו רוצים שיהיה לנו גם person name בכדי שלא יהיה את מכש ה-enter, וגם טקסט קאפ וורדס זה אומר שים בכל מילה את האות הראשונה שלה תהפוך את המקלדת עצמה למקלדת של אותיות גדולות רק עבור האות הראשונה
בכל מילה ואנחנו יכולים את שניהם ביחד אנחנו לוקחים את הראשון ואז עם קו אנכי מה נקרא ורטיקל פייפ לבוא ולהגיד לו אני רוצה גם את זה וגם את זה עכשיו המקלדת תהיה בלי אנטר בהתאם למקלדת של שם של משתמש וגם כל מילה תתחיל באות גדולה אוטומטית אבל אם אנחנו מסתכלים עכשיו פה למעלה אנחנו רואים שיש לנו v no problems found איזה מגניב כל הקובץ הזה תוקן מהערות של לינט אז כמובן כל קוד שאנחנו כותבים עדיף
שיהיה את ה-v הזה והוא נקי לגמרי מהערות של הלינט כולל קבצי xml וכולל כמובן קבצי java. כמובן שתוך כדי הפיתוח עדיף לתקן את זה מיידית, כלומר לא להגיע למצב שיש לנו הערות ואז בסוף ללכת ולתקן אותן, אלא ברגע שאנחנו רואים את אותו צהוב מיד לעצור, לבדוק מה בדיוק הבעיה של מנגנון הלינק עם
השורה שכתבנו ומיידית לטפל בזה. בואו ניכנס לקוד הג'אווה ונראה האם יש לנו בקוד הג'אווה גם בעיות. אנחנו נכנסים, כבר אנחנו עולים פה למעלה ואנחנו רואים שיש לנו שלושה וורנינגים.
בואו נראה את הראשון הראשון הוא כותב לנו unused import statement בואו ניגש לכל האימפורטים נפתח ובאמת נראה שיש פה איזשהו אימפורט שהשתרברב לו כאן של image view ובכלל אין לי פה image view בקוד אז אנחנו כבר יודעים שהאפור הזה זה אומר משהו לא בשימוש וזה משהו לא רצוי זה כמו אותו סיב בד שהוא לא תורם שום דבר
לאף אחד והוא ממש לא בשימוש ואנחנו תמיד מעיפים אותו אז הכי פשוט לבוא ולהיפטר מהדבר הזה בואו נמחק את זה והופה נעלמה לה הערה אחת היזה בגניב הקוד יותר נקי בואו ניגש ונראה כשיש לנו פה עוד שתיים לדוגמה יש לנו את זה private field sum number is never used הנה הוא אנחנו רואים אותו גם פה באפור באמת סתם זרקתי פה איזה שהוא
משתנה שהוא לא בשימוש אין לנו מה לעשות איתו ביי ביי נעיף אותו הדבר הבא שיש לנו זה ההערה האחרונה למעשה field can be converted to a local variable זה מעניין הנה פתחתי כאן האמת בכוונה בשביל להראות את זה איזשהו משתנה לוקאלי או ליתר דיוק סליחה לא משתנה לוקאלי משתנה גלובלי ברמת מחלקה data member מה נקרא או field
אבל אני משתמש איתו רק כאן בפונקציה הזאת ומנגנון הלינק כבר מזהה ואומר לי רגע אז אם אתה משתמש איתו רק בתוך פונקציה למה באמת הגדרת אותו באזור הגלובלי מיותר לגמרי מסוכן אולי מתכנת אחר יתפוס וישתמש בו באיזה פונקציה אחרת אתה לא צריך את זה אז למעשה אנחנו יכולים
להגדיר אותו כאן באזור הלוקאלי בוא נראה אם מנגנון הלינק פותר לנו את זה אלט אנטר ואנחנו רואים שהוא אומר לנו convert to local בטח בוא תעביר לי אותו למשתנה לוקאלי אנחנו לוחצים עליו ושימו לב מה קרה א' הוא מחק לנו אותו ובית הוא הפך את המשתנה הזה ללוקאלי הוא הגדיר פה סטרינג אנחנו מסתכלים ואנחנו רואים שגם בקובץ הג'אווה אין לנו
יותר בעיות והערות וכמובן לא שגיאות עכשיו איפה קיימות כל ההגדרות האלה של מנגנון הלינק אז אנחנו יכולים לגשת ולהסתכל על כל ההגדרות של מנגנון הלינק כאן פייל סטינגס ניכנס לסטינגס וניגש Editor Inspections וכאן אנחנו יכולים לראות שיש לנו את כל Android לינט.
אנחנו יכולים לראות שיש פה המון המון המון הגדרות והערות כל דבר כזה זה בעצם הערה שיש וכל הקטגוריה הזאת זה רק Android לינט יש לנו פה עוד הרבה הערות שונות שאנחנו יכולים להסתכל עליהן.
בואו נראה אחד או שתיים ואיך אנחנו יכולים לשנות משהו בהגדרות. אז בואו ניגש כאן לדוגמה לג'נרל דברים כלליים