Спасибо за интерес к проекту Advanced Calculator! Мы рады любому вкладу в развитие калькулятора.
- Проверьте, нет ли уже похожей проблемы
- Создайте новый issue с подробным описанием
- Укажите шаги для воспроизведения
- Приложите скриншоты, если применимо
- Откройте issue с меткой "enhancement"
- Опишите предлагаемую функциональность
- Объясните, зачем это нужно
- Предложите возможную реализацию
- Node.js 16+
- npm 8+
- Git
# Форк проекта на GitHub
git clone https://github.com/your-username/advanced-calculator.git
cd advanced-calculator
# Установка зависимостей
npm install
# Запуск веб-версии для разработки
npm run web
# Или запуск Electron версии
npm start-
Создайте ветку для новой функции:
git checkout -b feature/amazing-feature
-
Внесите изменения следуя нашим стандартам кода
-
Тестируйте изменения:
# Веб-версия npm run web # Desktop версия npm start # Проверьте все языки и режимы калькулятора
-
Зафиксируйте изменения:
git add . git commit -m "feat: add amazing feature"
-
Отправьте в свой форк:
git push origin feature/amazing-feature
-
Создайте Pull Request на GitHub
- Используйте ES6+ синтаксис
- Комментируйте сложную логику
- Следуйте существующему стилю кода
- Избегайте глобальных переменных
- Используйте БЭМ методологию где возможно
- Поддерживайте responsive дизайн
- Тестируйте на мобильных устройствах
- Используйте CSS переменные для цветов и размеров
- Используйте семантические теги
- Добавляйте
data-translateатрибуты для новых текстов - Поддерживайте accessibility (a11y)
Для добавления нового языка:
-
Добавьте переводы в
calculator.js:const translations = { // ... существующие языки 'new-lang': { 'app-title': 'Advanced Calculator', // ... все ключи перевода } };
-
Добавьте опцию в селектор языка в
index.html -
Протестируйте все функции на новом языке
- Все ключи должны быть переведены
- Сохраняйте контекст и смысл
- Учитывайте длину текста для UI
- Тестируйте на мобильных устройствах
При добавлении новых функций в AdvancedMathEngine:
-
Добавьте функцию в класс:
newFunction(x) { // Валидация входных данных if (typeof x !== 'number' || isNaN(x)) { throw new Error('Invalid input'); } // Реализация функции return result; }
-
Зарегистрируйте в
functionsобъекте -
Добавьте переводы для всех языков
-
Добавьте в автодополнение
-
Обновите документацию
- Поддерживайте все существующие темы
- Используйте CSS переменные для цветов
- Тестируйте контрастность
- Обеспечьте читаемость на всех темах
- Тестируйте на экранах от 320px
- Используйте
clamp()для адаптивных размеров - Обеспечьте удобные touch targets (минимум 44px)
- Проверяйте горизонтальную ориентацию
Используйте Conventional Commits:
feat:- новая функциональностьfix:- исправление ошибкиdocs:- изменения в документацииstyle:- форматирование кодаrefactor:- рефакторинг без изменения функциональностиtest:- добавление тестовchore:- обновление зависимостей, настроек сборки
Примеры:
feat: add complex number support
fix: resolve division by zero error
docs: update installation instructions
style: format calculator.js with prettier
Перед отправкой PR обязательно протестируйте:
- Все арифметические операции
- Научные функции
- Работа с дробями
- История вычислений
- Переключение языков
- Смена тем
- Ввод сложных выражений
- Автодополнение
- Предварительный просмотр
- Вставка результата в основной калькулятор
- Chrome/Chromium
- Firefox
- Safari (если доступен)
- Edge
- Мобильные браузеры
- 320px (мини-телефоны)
- 375px (iPhone SE)
- 768px (планшеты)
- 1024px+ (десктоп)
- Issues: для багов и предложений
- Discussions: для общих вопросов
- Pull Requests: для изменений кода
Участвуя в проекте, вы соглашаетесь с тем, что ваш код будет лицензирован под MIT License.
Спасибо за ваш вклад в развитие Advanced Calculator! 🎉