Сушка представлений в направляющих (number_to_currency)

Прежде всего, как большинство респондентов здесь указывают, если парень не видит значение в тестировании, нет очень, можно делать с этим, и Вы уже указали, что не можете уволить парня. Однако отказ не является опцией здесь, таким образом, что относительно нескольких вещей Вы можете делать?

, Если Ваша организация является достаточно крупной для имения более чем 6 разработчиков, я настоятельно рекомендую иметь отдел Гарантии качества (даже если его всего одна личность для запуска). Идеально, у Вас должно быть отношение 1 тестера 3-5 разработчикам. Вещь о программистах..., они - программисты, не тестеры. Я должен все же взять интервью у программиста, которому официально преподавали надлежащие методы QA.

Большинство организаций делает фатальный дефект из присвоения ролей тестирования к новому найму, человеку с НАИМЕНЬШИМ КОЛИЧЕСТВОМ суммы воздействия Вашему коду - идеально, старшие разработчики должны быть перемещены в роль QA, поскольку они имеют опыт в коде, и (надо надеяться) развили шестое чувство для запахов кода и мест ошибки, которые могут неожиданно возникнуть.

, Кроме того, программист, который сделал ошибку, вероятно, не собирается находить дефект, потому что обычно не синтаксическая ошибка (те забраны в компиляции), но логическая ошибка - и та же логика работает, когда они пишут тест как тогда, когда они пишут код. Не имейте человека, который разработал тест кода, которые кодируют - они найдут меньше ошибок, чем кто-либо еще был бы.

В Вашем случае, если можно предоставить перенаправленное усилие по работе, делают этого нового парня первым членом команды QA. Заставьте его читать "Тестирование программного обеспечения В Реальном мире: Улучшение Процесса", потому что ему, очевидно, будет нужно некоторое обучение в его новой роли. Если ему не нравится он, он выйдет, и Ваша проблема все еще решена.

А немного меньшему количеству мстительного подхода позволили бы, этот человек делает то, к чему они способны (я предполагаю, что этот человек был нанят, потому что они на самом деле компетентны в части программирования задания), и наймите тестер, или два, чтобы сделать тестирование (у студентов университета часто есть практические занятия или условия "кооператива", любил бы воздействие и являются дешевыми)

Примечание Стороны: В конечном счете Вы захотите команду QA, сообщающую директору QA, или по крайней мере не менеджеру разработчика программного обеспечения, потому что наличие команды QA сообщает менеджеру, который является основной целью, должен был сделать продукт, конфликт интересов.

, Если Ваша организация меньше, чем 6, или Вам не может сойти с рук создание новой команды, я рекомендую парное программирование (PP). Я не общее преобразование всех методов экстремального программирования, но я - определенно сторонник парного программирования. Однако оба члена парной команды программистов должны быть выделены, или она просто не работает. Они должны следовать за двум правилам: инспектор должен полностью понять то, что кодируется на экране, или он должен попросить, чтобы кодер объяснил его; кодер может только кодировать то, что он может объяснить - нет, "Вы будете видеть", или "доверяют мне", или помахивание руки будет допускаться.

я только рекомендую PP, если Ваша команда способна к нему, потому что, как тестирование, никакой объем приветствия или угрозы не убедит несколько заполненных эго интровертов сотрудничать, если они не будут чувствовать себя комфортно, делая так. Однако я нахожу, что между выбором записи подробных функциональных спецификаций и выполнением обзоров кода по сравнению с парным программированием, PP обычно побеждает.

, Если PP не для Вас, тогда TDD является Вашим лучшим выбором, но только если его взятый буквально. Разработка через тестирование, средняя, Вы пишете тесты СНАЧАЛА, запускаете тесты, чтобы доказать, что они на самом деле приводят к сбою, затем пишут самый простой код, чтобы заставить ее работать. Компромисс теперь у, Вас (должен) быть набор тысяч тестов, который является также кодом и так же вероятен как производственный код для содержания ошибок. Я буду честен, я не большой поклонник TDD, главным образом из-за этой причины, но это работает на многих разработчиков, которые были бы сценарии довольно теста записи, чем документы тестового сценария - некоторое тестирование не лучше, чем ни один. TDD пары с PP для лучшей вероятности тестового покрытия и меньшего количества ошибок в сценарии.

, Если все остальное перестало работать, имейте эквивалентность программистов поклясться банки - каждый раз, когда программист повреждает сборку, они должны поместить 20$, 50$, 100$ (независимо от того, что является умеренно болезненным для Вашего штата) в банку, которая переходит к Вашему фавориту (зарегистрированный!) благотворительность. Пока они не заплатили, избегают их:)

Все шутки в сторону, лучший способ получить Вашего программиста к тестам записи, не позволяют ему программа. Если Вы хотите программиста, нанимаете программиста - Если Вы хотите тесты, нанимаете тестер. Я запустил как младший программист, 12 лет назад делающий тестирование, и оно превратилось в мою карьеру, и я ни на что не обменяю его. Солидный отдел QA, который правильно лелеют и дают питание и мандат улучшить программное обеспечение, так же ценен как разработчики, пишущие программное обеспечение во-первых.

11
задан Gav 9 September 2009 в 15:00
поделиться

4 ответа

number_to_currency является помощником представления, поэтому он недоступен в моделях.

Вы можете сохранить некоторые нажатия клавиш, указав свой собственный помощник в application_helper.rb (чтобы он был доступен для всех представлений). Например,

def quid(price)
  number_to_currency(price, :unit => "£")
end

Затем вызовите его в представлениях:

quid(line_item.price)
13
ответ дан 3 December 2019 в 00:45
поделиться

Причина ошибки слишком глубокий уровень стека заключается в том, что когда вы говорите self.price в методе price , вы создают бесконечный рекурсивный вызов вашего метода цены, поскольку теперь вы переопределили обычный метод доступа. Чтобы избежать этого, вам нужно будет получить доступ к значению поля цены с помощью хэша атрибутов. например, что-то вроде:

def price
 number_to_currency(attributes['price'], :unit => "£")
end

за исключением того факта, что number_to_currency недоступно в коде модели по причине, описанной Ларри К.

6
ответ дан 3 December 2019 в 00:45
поделиться

Другой ответ относительно создания другого вспомогательного метода quid (цена) для упрощения повторения, вероятно, лучший подход ... однако ... если вы ДЕЙСТВИТЕЛЬНО хотите получить доступ к помощникам просмотра в модели, вы можете сделать что-то вроде:

# /RAILS_ROOT/lib/your_namespace/helper.rb
#
# Need to access helpers in the model?
# YourNamespace::Helper.instance.helper_method_name
module YourNamespace
  class Helper
    include Singleton
    include ActionView::Helpers
  end
end

, тогда вы сможете сделать это в классе модели:

def price
  helper = YourNamespace::Helper.instance
  helper.number_to_currency(read_attribute('price'), :unit => "£")
end
1
ответ дан 3 December 2019 в 00:45
поделиться

Вот мой подход к этой проблеме ..

# /RAILS_ROOT/lib/app_name/currency_helper.rb
module AppName
  module CurrencyHelper    

    include ActionView::Helpers::NumberHelper

    def number_to_currency_with_pound(amount, options = {})
      options.reverse_merge!({ :unit => '£' })
      number_to_currency_without_pound(amount, options)
    end

    alias_method_chain :number_to_currency, :pound

  end
end

в ваши модели вы можете сделать это (и вы не будете загрязнять свою модель методами, которые не собираетесь использовать)

class Album < ActiveRecord::Base
  include AppName::CurrencyHelper

  def price
    currency_to_number(amount)
  end
end

затем, чтобы все ваши представления были обновлены, включите модуль в один из помощников вашего приложения

module ApplicationHelper
   # change default currency formatting to pounds..
   include AppName::CurrencyHelper
end

Теперь везде, где вы используете число в качестве помощника валюты, оно будет отформатировано с помощью символа фунта, но вы также обладаете всей гибкостью исходного метода rails, так что вы можете передавать параметры, как и раньше.

number_to_currency(amount, :unit => '$')

преобразует его обратно в символ доллара.

2
ответ дан 3 December 2019 в 00:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: