السلام عليكم اخواني الكرام
لقد قمت اليوم بالانتهاء من برنامج ترتيب الملفات وهو بالمرفقات بصيغة jar + السورس كود
السلام عليكم اخواني الكرام
لقد قمت اليوم بالانتهاء من برنامج ترتيب الملفات وهو بالمرفقات بصيغة jar + السورس كود
Mohamed Hamdan كتب:السلام عليكم اخواني الكرام
لقد قمت اليوم بالانتهاء من برنامج ترتيب الملفات وهو بالمرفقات بصيغة jar + السورس كود
لم أفهم مايقوم به البرنامج ، ياريت شرح بسيط عن البرنامج ، ترتيب أبجدي أو بالملفات، إلخ ، نقلها أو نسخها بالترتيب :)
Muhammed Magdy كتب:
لم أفهم مايقوم به البرنامج ، ياريت شرح بسيط عن البرنامج ، ترتيب أبجدي أو بالملفات، إلخ ، نقلها أو نسخها بالترتيب :)
يقوم بترتيب الملفات حسب الصيغة بأمكانك تحميل الملف وتجربته
السلام عليكم
فكرة البرنامج جيدة لكن توجد برامج عديدة تقوم بهذا العمل لذا إن كنتَ كتبتَ البرنامج لغرض تعليمي فلا حرج عليك أما إن كنت تود منافسة البرامج الموجودة في السوق فيجب عليك إضافة خيارات جديدة غير موجودة في البرامج المنافسة حتى تضمن التميز.
إليك ملاحظاتي عن البرنامج بشكل سريع :
بالتوفيق.
تم تعديل هذه المشاركة بواسطة Snack3r في 12 نوفمبر 2014 في 01:32
C++ and Java, say, are presumably growing faster than plain C, but I bet C will still be around. ― Dennis Ritchie
~OoO~________--------------------------------------------________~OoO~
من مواضيعي :
Snack3r كتب:السلام عليكم
فكرة البرنامج جيدة لكن توجد برامج عديدة تقوم بهذا العمل لذا إن كنتَ كتبتَ البرنامج لغرض تعليمي فلا حرج عليك أما إن كنت تود منافسة البرامج الموجودة في السوق فيجب عليك إضافة خيارات جديدة غير موجودة في البرامج المنافسة حتى تضمن التميز.
إليك ملاحظاتي عن البرنامج بشكل سريع :
- الـ progressbar يجب أن يتقدم حسب نسبة العمل المُنجز و هذا ما لم تفعله.
- حاول أن تضع خيار للنسخ و آخر للنقل بدل النقل فقط ثم فكر في وضع زر لتوقيف العملية و آخر لإلغائها (pause, cancel)
- يُفضل أن تضع JLabel بالأسفل تُظهر فيه الملف الذي يتم نقله الآن حتى يكون المُستخدم على علم بتفاصيل العملية لأن المستخدم إذا قام مثلا بنقل 100 ملف و أخذ الأمر 5 دقائق و لم يُظهر له البرنامج، لا نسبة تقدم العملية و لا اسم الملف المُعالج سيظن أن البرنامج لا يعمل بشكل صحيح !
- احذر من تقييد الامتدادات، مثلا برنامجك لا يستطيع نقل ملفات VOB ! حاول أن تأخذ بعين الاعتبار وجود امتدادات معينة لم تكن على علم بها أثناء كتابتك الكود
- رسائل الخطأ فضفاضة جداً، حاول وضع رسائل يستطيع المستخدم أن يفهم من خلالها طبيعة الخطأ
- عند الضغط على "تصفح" يجب أن تسمح باختيار المجلدات فقط
- إن تركت الـ jtextfields تبع التصفح enabled يجب أن عليك أن تأخذ بعين الإعتبار مجموعة الـ exceptions المحتلملة (مثلا، إذا أدخل المستخدم مساراً غير صحيح ستحصل على استثناء من نوع NullPointerException)
- أعتقد أنه عند تحديد مسار صحيح، من المنطقي جداً نقل الملفات الموجودة في الـ subfolders (هل فكرتَ في الأمر ؟)
- تعاملك مع الـ CheckBoxs و الامتدادات لم يكن جيدا، ما دمتَ تنوي التعامل مع عدد كبير من كائنات من نفس النوع فيُستحسن وضعها داخل ArrayList أو HashMap مثلا و الوصول للكائنات عن طريق الـ index أو الـ value إن أردت.
- في الكلاس acListener قمت بالإعلان عن المتغيرات calendar, Second, Second1, minute1, minute لكن لم تستخدمها !
- مبدأ الـ OOP أتى أساساً للتخلص من التعامل مع متغيرات فئة في فئة أخرى (استخدام الـ public يجب أن يكون محدوداً جداً و لا يُنصح به)
- قمتَ بالتعامل مع متغيرات الكلاس FilesSort داخل الكلاس acListener، كان يجب عليك أن تستخدم الـ observer pattern إن كنتَ ملزما بهذا مع أنني أرى أن إضافة الـ actionListener ليست سبباً لإنشاء كلاس جديد ! (لو استخدمت ArrayList ووضعتَ فيه الـ checkBox ستجد أن الكود تقلص بشكل كبير)
- المنطقي هو أن ترث الفئة FilesSort بشكل مباشر JFrame، وجود متغير داخل الفئة اسمه frame يُمثل النافذة يعني أن FilesSort ليست نافذة و إنما هي كائن يحوي مجموعة كائنات من بينهم نافذة !
- أشجعك جداً على استخدام الكود لرسم الواجهة.
- setLayout(null)l لا أنصح بها، كان من الأفضل أن تكتب LayoutManager خاص بك ثم تقوم باستخدامه لتحديد تموضع كل مُكون مع أنني أرى أن استخدام الـ Layouts الموجودة مُسبقاً يكفيك.
- من ناحية جودة الكود و جعل تطوير البرنامج أكثر سلاسة، قم بفصل المكونات الثلاث : model, view, controller.
- إذا قام المستخدم بنقل ملفات ذات حجم كبير، سيتعطل الـ thread تبع الـ EDT، من الأفضل أن تضع كود نقل الملفات في thread منفصل.
بالتوفيق.
شكرا لك اخي الكريم مع ان البرنامج ليس للمنافسة فهو فقط لغرض تعليمي ولكن سوف اقوم بالاخذ بنصائحك وتنفيذها ولكن سوف تواجهني بعض المشاكل التي لا اعلمها ولكن سوف احاول ان اقوم بحلها شكرا لك