שְׁאֵלָה:
שמירה על מיקוד במהלך תהליכים אוטומטיים, "זה קומפילציה"
Daniël van den Berg
2016-06-20 14:09:29 UTC
view on stackexchange narkive permalink

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

The #1 programmer excuse for legitimately slacking off: my code's compiling. From xkcd 303 by Randall Munroe per https://creativecommons.org/licenses/by-nc/2.5/

[xkcd comic 303 מאת רנדל מונרו]

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

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

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

כיצד אוכל להישאר פרודוקטיבי?

ערוך:

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

עדכון:

לקחתי מהרבה מה הציעו תשובות, ואף אחת מהן אינה "הנכונה", מכיוון שכולן מציעות רעיונות ודעות שונות. חלקן הן דרכים נהדרות להאיץ את הידור, אך לצערי אף אחת מאלה אינה חלה עלי. אני עובד על מערכת מהירה עם שני SSD, אבל צוואר הבקבוק הוא שאני עובד על אנדרואיד, שעליו להעלות באמצעות USB. כך שלא ניתן להאיץ את הקומפילציה, אצטרך לשמור על זרימת העבודה שלי אחרת.

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

דניס ו- Иво Недев עזרו לי דרך ארוכה. התחלתי לעבור על הקוד שלי בזמן הידור, ולהוסיף הערות במידת הצורך. קשה להתחיל איתו, כיוון שהרעיון "מה, כל מי שקורא את זה צריך לדעת מה זה אומר". העמדת פנים שאנשים שקוראים את הקוד שלי יהיו טיפשים עזרו מאוד בהוספת תיעוד מתאים.

מה שלדעתי היה השינוי הגדול ביותר הוא משהו שלא הוזכר בשרשור זה, מכיוון שלא סיפקתי את הפרטים הספציפיים לתשובה כמו זה שתעלה. תוך כדי הליכה בתהליך שלי שוב, ובעצם תזמון זמן הקומפילציה (מתברר שהוא דקה 15), הבנתי שהבעיה הגדולה ביותר היא שאני לא יכול לעשות שום דבר בזמן שהוא נערך. ל- Visual Studio יש הרגל מגעיל לנעול את הקבצים שלך ... אז תודה ל https://stackoverflow.com/questions/3123624/visual-studio-locking-files- while-debugging שניהלתי כדי לשנות את זה, ואני יכול לומר, זה עוזר מאוד להיות מסוגל לגעת בקוד שלך בזמן שהוא פועל.

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

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

התגובות אינן לדיון מורחב; השיחה הזו הועברה לצ'אט (http://chat.stackexchange.com/rooms/41499/discussion-on-question-by-daniel-van-den-berg-staying-focused-during-automatic-p) .
השאלה הוגנה ולכן אני לא יכול להוסיף תשובה חדשה אבל אני חושב שיש תשובה טובה יותר מאלה שכבר ניתנו: השתמש טוב יותר במבחני היחידות. אתה יכול ליצור את הכיתה ולבדוק את התנהגותה במבחני יחידות שתוכל להריץ ב- IDE שלך. זה בטח גם יאפשר לך להריץ בדיקת יחידה ספציפית אחת כדי לבדוק אם השינויים שלך תיקנו אותה. בדרך זו תצטרך לפרוס אותה בתדירות נמוכה יותר.
באופן משעשע - הגעתי לכאן בזמן שמסמך הלטקס שלי נערך ...
"... אבל צוואר הבקבוק הוא שאני עובד על אנדרואיד, שעליו להעלות באמצעות USB. אז כיוון שלא ניתן לזרז את הקומפילציה ... `- אז צוואר הבקבוק שלך הוא * לא * שלב ההידור. זה השלב * העלאה *.
ארבעה עשר תשובות:
Jim G.
2016-06-20 16:19:20 UTC
view on stackexchange narkive permalink

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

  1. קנה SSD.
  2. הוסף עוד זיכרון RAM.
  3. אם אתה מפתחים אפליקציית אינטרנט: השתמש ב browserify כדי לטעון מחדש את קוד צד הלקוח שלך.
  4. בעת הפיתוח, בנה רק את החלקים של בסיס הקוד שמשתנים.
  5. בדוק את קוד הבנייה ובמחשב המקומי שלך, קצר את הבנייה כך שהוא יבנה רק את החלקים של בסיס הקוד שמשתנים.
  6. שקול להריץ בדיקות יחידה אוטומטיות רק לפני הבדיקה. -ins.
  7. שתף פעולה עם חברי הצוות והמנהלים כדי לצמצם את זמן הבנייה לצמיתות.

מידע נוסף על מספר 1 ומס '2: אלה יעילים במיוחד. אתה צריך לעשות את זה גם אם אתה צריך להוציא כסף מהכיס שלך כי הם יגדילו את שביעות הרצון הכללית שלך במקום העבודה. נגר טוב לא יסבול מסור עמום, ואתה לא צריך לסבול כונן קשיח איטי או תחנת עבודה עם זיכרון RAM לא מספיק. אתה רוצה להיות בבית בלילה, לאכול ארוחת ערב עם המשפחה שלך או לצפות בנטפליקס. אינך רוצה לסבול "מוות עלוב באלף קיצוצים" על ידי המתנה לבנייה איטית.


עריכה:

  1. לאנשים שאמרו שלא עניתי לשאלת ה- OP: אנא שקול תשובת מטא זו.
  2. בנייה איטית יכולה לשבש את מקום העבודה. חשוב מאוד לבחון את כל האפשרויות לפני שתקבל את העובדה שהבנייה איטית.
ההערות אינן לדיון מורחב; שיחה זו הועברה לצ'אט (http://chat.stackexchange.com/rooms/41500/discussion-on-answer-by-jim-g-staying-focused-during-automatic-processes-its).
הייתי מוסיף גם להסתכל על כלים אחרים. אני זוכר שהייתי צריך לעבוד עם Sharepoint ולקח 15 דקות לפרוס ולבדוק שינוי JavaScript! בסופו של דבר השתמשתי בכינור כדי להפנות מחדש שיחות לקבצי JS לאחסונים מקומיים שאוכל לשנות במהירות.
יכול לאשר. היה לו אסדה ישנה די הרבה זמן וזה היה ממש מחמיר. לאחר קבלת עבודה עם יותר זיכרון RAM, העבודה הייתה טובה בהרבה מבעבר.
שווה מידה גם לבדיקת הווירוסים שלך וראה כמה הוא מאט את המבנה. החלף בודק וירוסים במידת הצורך.
רק כדי להוסיף מספר 1 ו -2, אם יש לך מספיק זיכרון RAM בשביל זה, אולי תשים את כל הפיתוח שלך על [דיסק RAM] (https://en.wikipedia.org/wiki/RAM_drive) (שפע של משאבים כיצד ליצור אחד במערכת שלך), רק וודא שיש לך משהו שמגבה את זה כל כמה דקות במקרה של אובדן חשמל, כיבוי בלתי צפוי וכו '. השתמשתי בזה בעצמי בהשפעה רבה, על ידי הצבת כל סביבת הפיתוח שלי. בו (מופע ג'אווה, נמלה, ליקוי חמה, קוד מקור וכו ')
coteyr
2016-06-20 19:26:57 UTC
view on stackexchange narkive permalink

קרב חרב הוא תרגיל נהדר. השתמש בו.

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

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

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

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

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

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

כדאי לקרוא על כמה רע להחליף משימות שוב ושוב לצורך פרודוקטיביות. דברים כאלה לא ממש עובדים. הוא יאבד עוד יותר את התפוקה ויילחץ יותר
ובכן, כשקראתי לראשונה את השאלה הנחתי ש- 30 דקות עד שעה היא מבנה ארוך. אם יש לך חצי שעה להרוג בזמן שאתה ממתין למהדר, אז עדיף למלא אותו במשימות הקשורות למחצה לפחות. אם אתה מדבר על 30 שניות .... ובכן זה זמן טוב ככל האפשר לעשות סוג כלשהו של מתיחת עיניים או מאמץ באצבעות. שם קל ומהיר, וחשוב ביותר.
ובכן אני מסכים עם זה אז.
שקול להוסיף נקודת תביעה: "בדוק * רשימת StackExchange שאלות חמות ברשת * ;-)
@DigitalTrauma זה חייב להיות אחד הטיפים הגרועים ביותר לפרודוקטיביות אי פעם;) גרוע כמעט כמו "קרא מאמר בויקיפדיה ונסה לא לעקוב אחר קישורים כלשהם" (אף פעם לא עובד ככה).
בזכות התקורה של החלפת ההקשר והמקום המוגבל בערימה הנפשית של האדם, ניסיון לדבוק בעבודה שאיננה קשורה במהלך המתנה זו הוא כנראה פחות פרודוקטיבי בהייה בתקרה.
@NathanCooper תרגילי אצבע או תרגילי מתיחת עיניים אינם דורשים יכולת נפשית רבה. במיוחד אם אתה נוהג לעשות אותם. "F5" 1-2-3-4-5 1-2-3-4-5 בדוק מבנה. קוד קוד קוד. "F5" 1-2-3-4-5 1-2-3-4-5 בדוק מבנה. וזה הרבה פחות תקורה מאשר עומס בעין או RSI.
אני קורא את זה בזמן שהדברים מתקינים, אבל הם נעשו לפני דקות :)
אני חושב שמחקר של מיקרוסופט העלה כי מענה למיילים עולה 30 דקות של פרודוקטיביות? תשובה זו היא עצה מזיקה באופן פעיל. אני לא יודע מדוע 14 אנשים הצביעו על התגובה והציעו כל כך הרבה אך לא הצניעו את התשובה.
30 שניות בדיוק בעמק הרע. זמן רב מדי להישאר מרוכז אם אתה צריך לבנות לעתים קרובות מאוד, אך קצר מכדי לעבור למשהו אחר.
"התחייב ל- SCM אם אתה יכול" לפני שהבנייה הסתיימה?
@StuperUser אולי, תלוי בשפה, ב- SCM ובהתעלמות שלך. אתה לא בודק את האובייקטים הבינאריים, אז למה לא להתחייב? אם בענף התכונה שלך אתה מבצע את כל הטעויות שאתה רוצה, כמה מהרעיונות הטובים ביותר נובעים מטעויות. תתמזג / תדעך לפני שתמזג לסניף הראשי / הראשי, נכון? הנקודה היא שכל התקנה שונה. אין שום סיבה שאתה לא יכול להתחייב תוך כדי בנייה אם אתה נמצא בסביבה שתומכת בכך.
Dennis Jaheruddin
2016-06-20 19:10:08 UTC
view on stackexchange narkive permalink

משהו מהניסיון שלי:

נסה לתקן טעויות מרובות בבת אחת.

בטח, מהר מאוד להחליף שתי עמודות, לאחר שתבחין שהן מוחלפות. אך וודא שלא תפסיק לבדוק לאחר שתמצא תקלה אחת.

לדוגמה, תוכל להפחית את מספר המחזורים על ידי בדיקת דברים אחרים:

  • האם העמודות לפחות מעוצבות כראוי?
  • האם כל העמודות האחרות מכילות את מה שהן צריכות?
  • ...

זה חשוב במיוחד ב מחזור אחד או שניים ראשונים ויכול לעזור לך לחזור בין 15 ל -5 עיכובים של 30 שניות (וכנראה גם תוצאה טובה יותר).

אה בנאדם, זה כל כך קריטי. אנו מתמקדים כל כך בהפחתת זמן המחזור ... זמן כולל = זמן מחזור * מספר מחזורים. הפחתת מספר המחזורים חשובה לא פחות מהפחתת זמן המחזור !!
אני חושב שזה מתעלם מהעלות של תיקון יותר מדי דברים במחזור אחד - זה מקשה מאוד לבודד את ההשפעה של שינויים בודדים. לכן יש התמקדות כזו בזמן המחזור - צמצום מספר המחזורים מייצר השפעות מזיקות אחרות
@Dancrumb זה לא צריך להיות אם אתה מצליח מה לתקן, במיוחד בשלב שבו הכל 'בנוי' ואתה בודק. בזמן הבדיקה, ערוך רשימה טובה של כל הבעיות שעליך לתקן. נסה להבין מה עליך לתקן, כך שלא תצטרך ניסוי וטעייה מאוחר יותר. בדוק כמה שיותר פונקציונליות חדשה / קבועה. ואז להרוג את התוכנית, להיכנס ל- IDE ולתקן את כל אלה. סמן ברשימה אילו תיקונים. ואז בנה את המבחן שלך ובדוק את כל התיקונים שלך - השלם דרך בסיום. בדרך זו אתה יכול בקלות לבצע מחזורים של 10-20 תיקונים בכל פעם לפני שתצטרך לבנות מחדש.
זה מה שאני עושה. באופן ספציפי יותר, אני מנסה לעבוד על שני נושאים עצמאיים בכל פעם. אני אעבוד על משימה מס '1, אכה על הידור, החלף למשימה מס' 2 שהיא דואר אלקטרוני, או בסיס קוד אחר. לאחר מכן החלף חזרה למשימה מס '1, בדוק וחזור.
למעשה, עם זמן בנייה של 30 שניות, זה לא עניין גדול. במקרה הגרוע ביותר, אתה מתחיל לקמפל ולבדוק שוב את הקוד בינתיים, אם לא מצאת כלום, חסכת 30 שניות. בכל מקרה, לחשוב יותר מדי על הקוד למשך 30 שניות פשוט לא שווה את זה.
תמיד תצטרך לבדוק מה אתה עושה. אחרת אתה יכול ליצור באגים או תקלות אחרות שעשוי להיות קשה לתקן מכיוון שאתה לא יודע אילו מהשינויים שלך יצרו את הבאג הזה
פספסתי את זה. זה לא טוב כמו להפחית בפועל את זמן ההידור, אבל עבור מי שאין בכוחו להפחית את זמן ההידור, זה שימוש מצוין ביכולות הקוגניטיביות של האדם - כמו שאתה עושה הכל בבת אחת.
איבדתי את המספר כמה מתכנתים שפגשתי ממהרים לבצע איתור באגים ולפתור רק את הבאג הראשון שהם מוצאים מבלי לבדוק את שאר השינויים. זו תשובה מצוינת.
רלוונטי: https://blog.codinghorror.com/boyds-law-of-iteration/
Captain Man
2016-06-20 19:53:21 UTC
view on stackexchange narkive permalink

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

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


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

שילובים רפויים או דומים עובדים היטב לשם כך
+1; עיכובים קורים, אלא אם כן אתה נותן לעצמך מספיק מקום לפקח על מנת לצפות בתוצאות בזמן ריבוי משימות, הדבר הטוב ביותר שאתה יכול לעשות הוא להימנע מהמקבילה האנושית ל"קלף ". ייתכן גם שיהיה קל לעטוף את פקודת המהדר כדי לגרום לה להקפיץ הודעה; אני משתמש בסקריפט פגז קצר "מודיע" שהוא בקיצור "$ @"; הודע-שלח "$ 1 הסתיים." ([docs] (https://wiki.archlinux.org/index.php/Desktop_notifications))
קשור באופן tangentially לנושא של תהליכים ארוכים, אם אתה מבצע באופן שגרתי שאילתות SQL ארוכות טווח, כמה לקוחות SQL יכולים לספק צליל גם בסיום.
Иво Недев
2016-06-20 14:24:28 UTC
view on stackexchange narkive permalink

התשובה שלי תלויה במהדר אך נסה זאת:

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

תוכלו:

  • לא להסיח את דעתך ולאבד מיקוד.
  • אם יש שגיאה, לא ייקח לך שתי דקות לתקן ולהדר שוב, אבל הרבה פחות.
  • Matthieu M.
    2016-06-20 18:58:07 UTC
    view on stackexchange narkive permalink

    למשל, מחליפים שני מזהים (שתועדו בצורה גרועה).

    ראיתי בעיה זו בתוכנות רבות המשתמשות ב Int או מחרוזת לכל מזהה יחיד; במקרה זה קל להעביר בטעות תעודת זהות במקום אחרת ולא להבחין בזה ... זמן רב.

    אם אתה יכול להעביר מזהה עוף למכונת השתייה, בקוד שלך יש סוגיה (*).

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

    הפוך אותם לסוגים שונים, והמהדר יצביע לך בשמחה על השגיאות שלך, שיאיצו מעלה את לולאת ה- Fix-Compile-Test (על ידי חיתוך שלב הבדיקה והפרעה של ה- Compile).

    זו הגרסה המקלדת סטטית של עקרון ה Fail Fast : שם הוא בקושי מהיר יותר מאשר שהמהדר (או אפילו IDE אם הוא מהדר ברקע) יפנה אליך שגיאות.

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

    ( *) אלא אם כן שתיית דם עוף אינה נוהגת אצלך, מה אני יודע ...

    זה אמנם לא מתייחס ישירות לשאלת ה- OP, אך זו אינה עצה רעה. השווה את [לגרום לקוד לא נכון להראות לא נכון] (http://www.joelonsoftware.com/articles/Wrong.html) ב- Joel בתוכנה או [איך גורמים לקוד שגוי להראות שגוי? באילו דפוסים אתה משתמש כדי למנוע שגיאות סמנטיות?] (Https://stackoverflow.com/q/26086/486504) ב- [כך].
    @MichaelKjörling: אכן; זה לא רעיון חדש :) גם עוקב אחר העיקרון של דניאל ג'יי ברנשטיין לנסות למגר באגים * כיתות * ולא באגים * התרחשויות *.
    אני מקבל את רוח התשובה הזו, אבל אני לא מצליח לראות איך אתה יכול להחיל את זה בפועל על משהו כמו מזהה. מלכתחילה יש רק כל כך הרבה סוגים סטטיים לבחירה, והרבה הם ניתנים להחלפה. אם עשית מזהה 'ארוך', למשל, אתה עדיין יכול לתת בטעות 'אינט'. חוץ מזה, זה פשוט יהיה מטורף בפועל.
    @ChrisPratt כמה שפות מקלות על דברים כאלה לודריקוסלי (F # ו- OCaml, למשל). הרעיון הוא שגם אם שני תעודות זהות זהות לסוג פרימיטיבי ('int', נגיד) יש לך סוג סביב 'int' עבור כל סוג של מזהה (ChickenID, DrinkID). למרות שהם פונקציונליים זהים, הסמנטיקה של מערכת הסוגים אומרת שאתה לא יכול להשיג אותם בצורה לא נכונה. כאשר קוד צריך לבצע השוואות וכאלה במזהה, ניתן ליישם את השיטות המתאימות לכל סוג, או שהקוד הספציפי יכול לפרק אותן במקום ששום דבר לא יכול להשתבש.
    @ChrisPratt: כדי להרחיב את ההערה של VisualMelon, שימוש בסוגים מובנים שונים יהיה רעיון נורא שכן בשפות רבות בכל מקרה יש המרה מרומזת כך ששום דבר לא היה מרוויח. במקום זאת, עבור כל * ישות עסקית * אתה צריך שיהיה לך * סוג עסק * עם הפונקציונליות המתאימה; בנוסף להימנע מלהטעות ישות אחת לאחרת, אתה גם נמנע מלהפעיל פונקציונליות לא חושית (גם אם מזהה הוא מספרי, מזהה 2 +, מזהה 2 * וכו '... פשוט לא הגיוני!).
    Kilisi
    2016-06-20 15:21:36 UTC
    view on stackexchange narkive permalink

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

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

    יש כנראה דרכים לעשות זאת כמו שהם אנשים שמתכנתים. מה שעובד בשבילך. תקן את הבעיה במקור.

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

    ההערות אינן לדיון מורחב; שיחה זו הועברה לצ'אט (http://chat.stackexchange.com/rooms/41501/discussion-on-answer-by-kilisi-staying-focused-during-automatic-processes-its).
    Joe Strazzere
    2016-06-20 15:02:12 UTC
    view on stackexchange narkive permalink

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

    לחכות 30 שניות פעם אחת זה לא נורא, אבל צורך לעשות זאת בערך 15 פעמים בשעה זה מייגע.

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

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

    התאמץ כדי להיות מודעים יותר לקוד שלך לפני שאתה מרכיב.

    תסתכל עליו, כתוב כמה הערות, תסתכל שוב. ואז הידור.

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

    סליחה על הגידול, אני לא מדבר על טעויות שנתפסו על ידי המהדר. זה בעיקר טעויות שאני מזהה רק ברגע שהתוכנית פועלת, שעבורן היא צריכה להיאסף. למשל, החלפת שני תעודות זהות (שתועדו בצורה גרועה). קשה לראות את הטעויות מהקוד, אך קל להבחין מההתנהגות.
    @DaniëlvandenBerg אם מצב זה קורה לעיתים קרובות, תוכלו לשקול לשלב TDD (פיתוח מונחה בדיקות).
    @Brandin TDD מסתמך * בכבדות * על מחזורים קצרים ובידור מחדש מאוד מאוד בתדירות גבוהה. TDD אמנם נחמד, אבל זה בהחלט יחמיר את הבעיה שלו *.
    ו- TDD הוא נוהג טוב. זה כאילו שהדברים ייעשו. "להתמקד יותר ולעשות פחות טעויות" הוא משאלת לב של אנשים שמתעלמים מאופי העבודה. כפי שאמר ה- OP, זה מאמץ רב יותר (כמו פי עשרה, או יותר) לאתר טעות בקוד מאשר בביצוע. ושגיאות רבות לעולם לא תראו בכל מקרה.
    @nvoigt: לא כי הידור מחדש לעתים קרובות מאוד יגביל את היקף הסיבות הפוטנציאליות לכישלון קומפילציה (ובדיקה אוטומטית בזמן הבנייה). אם אתה מבצע רק שינויים קטנים בין הבניין ואתה עדיין מוצא שאתה זקוק ל -15 ניסיונות כדי להשיג את זה נכון, אז (למרות זאת לא מצביע על כך) המתכנת _ פשוט עושה שגיאות רבות מדי (אבל אני מקווה שישתפר בזמן ככל שהם יאספו ניסיון) . כך או כך, TDD תגביל את הנזק שנגרם.
    @LightnessRacesinOrbit "הנזק שנגרם" הוא הזמן שאבד כי הידור מחדש לוקח זמן לא סביר. לענות על כך ב- TDD ו"רק להשלים מחדש לעתים קרובות יותר "זה מעבר להבנתי. אם משהו לוקח הרבה זמן ואני לא יכול לשנות את זה, אני צריך למזער את הצורך לעשות את זה. TDD עושה הרבה מאוד דברים, אבל זה ** לא ** ממזער את הצורך בהידור מחדש. קומפילציה מחדש בצעדים קטנים ותכופים היא לבו של TDD.
    @nvoigt: אם תבצע 50 שינויים משמעותיים בקוד לפני שתנסה אוסף, יהיה לך עוד מה לתקן ויותר אוסף מחדש נחוץ לפני שתגיע ליעד שלך. כל תיקון / שינוי מסכן את 49 השינויים שביצעת. אם אתה מבצע שינוי קוד משמעותי אחד, בדוק אותו מיד, ותגלה שנכשלת, הנזק שנגרם על ידי טעות זו עשוי להיות הרבה פחות בולט. אם כי למען האמת אני מוצא את כל העניין הזה בגלל שה- OP אומר שההידור לוקח רק 30 שניות, וזה לא כלום! : ד
    dotancohen
    2016-06-22 19:02:26 UTC
    view on stackexchange narkive permalink

    השקיע את הזמן בעצמך.

    10 שניות בחינם: בצע שכיבות סמיכה.
    60 שניות בחינם: עיין בשאלות רשת חמות של Stack Exchange. .
    120 שניות חינם: קום ושתה מעט מים.

    בדיוק קמתי מביצוע 20 שכיבות סמיכה בזמן שחיכיתי לעבודה שתענה לי על Slack. בכל פעם שאני רואה שיש לי 10 < שניות < 120 לחכות למשהו, אני משתמש בזמן כדי להשתפר עצמי . מאז שהתחלתי לעשות את זה לפני כמה שבועות, אני מרגיש בריא יותר, אנרגטי ופחות עייף. אני רואה שהתפוקה שלי הרקיעה שחקים. ואני מרגיש מצוין.

    user38933
    2016-06-20 20:28:47 UTC
    view on stackexchange narkive permalink

    היזהר יותר / השג תוכנה טובה יותר

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

    לא כל הבעיות יהיו ברורות מיד; זו הסיבה ש תכנות במקרה הוא רעיון נורא, וזה נשמע כמו מה שאתה עוסק בו.

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

    השתמש בזמן למשימות חד פעמיות קטנות

    עשוי השני להסיח את דעתך, זה לא יכול להיות דבר רע מטבעו.

    ריבוי משימות

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

    אני מנסה שתהיה משימה A ומשימה B - משימה B שאין לה שום קשר. תוכניות מהודרות, שאוכל לעבוד עליהן בזמן שמשימה א 'בונה ומוצצת כמעט את כל ה- IO של הדיסק שלי.

    זהו זרימה רגילה עבור TDD, קצת בודק מעט מעט קוד. לא מתכנת במקרה. תכנות במקרה לא אכפת לך מהבדיקות שלך
    SnakeDoc
    2016-06-20 21:35:14 UTC
    view on stackexchange narkive permalink

    יישום אינטגרציה רציפה / בניית שרת ובדיקות אוטומטיות.

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

    לאחר סיום הבנייה, השרת שלך צריך לבצע כמה בדיקות אוטומטיות כדי לתפוס בעיות נפוצות כמו מה שתיארת (עמודות מעורבות וכו '). השרת אמור לשלוח לך דוא"ל אם הוא מוצא שגיאות אוסף ו / או בדיקות.

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

    אנא אל תשתמש בשרת ה- build כמהדר שלך. עמיתים לעבודה שלך ילמדו במהירות לשנוא אותך.
    זו אמנם עצה טובה אך אינה נכונה. עליך לערוך ולהריץ בדיקות יחידה באופן מקומי לפני שתבצע. שרתי CI נותנים לך את האחריות רק במקרה של עובדים עצלנים או פחות מנוסים שמתחייבים מבלי לעשות את הדברים האלה. כמו כן, ההיגיון שלך לקוי כשאתה אומר שאתה יכול להמשיך לעבוד על המשימה שלך בשיטה זו, מכיוון שאתה יכול להמשיך לעבוד על המשימה שלך אם אתה בונה גם באופן מקומי.
    babelchips
    2016-06-20 18:26:01 UTC
    view on stackexchange narkive permalink

    (זה בתגובה לעריכה של השאלה המקורית שקובעת כי השגיאות המדוברות אינן שגיאות אוסף אלא אלה שאתה מזהה רק ברגע שהתוכנית פועלת.)

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

    kevin worley
    2016-06-20 18:00:13 UTC
    view on stackexchange narkive permalink

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

    kolsyra
    2016-06-21 14:30:01 UTC
    view on stackexchange narkive permalink

    חומרה טובה יותר

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

    תהליך בנייה טוב יותר

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

    שפר את עצמך

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

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

      - מצא את סמל הכפתור המתאים והנח אותו בקובץ index.html. - הפוך את הכפתור להתקשר למשהו בקצה האחורי, בדרך כלל API - הפוך את ה- API התקשר לשירות המתאים. - תן לשירות להתקשר לשיטות DataAccess המתאימות - צור בדיקות לכניסות חוקיות ולא חוקיות (backend) - צור בדיקות לכניסות חוקיות ולא חוקיות (אינטגרציה) - הוסף בדיקות אלה לרישום בדיקות אוטומטי - התחייב קוד - המשך אל המשימה הבאה  

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

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



    שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
    Loading...