Соглашения о присвоении имен с веб-сервисом / WCF и никакая [закрытая] перегрузка

База R

Используйте агрегат по числовым переменным и таблицу / проп. Таблицу по фактору.

ag <- aggregate(cbind(value1, value2) ~ group, data, 
  function(x) c(min = min(x), max = max(x)))
tab12 <- as.data.frame.matrix(setNames(as.data.frame(t(ag[-1])), 
  ag[[1]]))

counts <- table(data$group)

tab3 <- prop.table(table(group = data$value3, value3 = data$group), 2)
rownames(tab3) <- paste("value3", rownames(tab3), sep = " = ")

rbind(tab12, n = counts, as.data.frame.matrix(tab3))

дает следующее

              0    1
value1.min  1.0  2.0
value1.max  9.0 10.0
value2.min  1.0  2.0
value2.max  9.0 10.0
n          10.0 10.0
value3 = 1  0.4  0.4
value3 = 2  0.2  0.4
value3 = 3  0.4  0.2

sqldf

Эта альтернатива немного утомительна, но проста:

library(sqldf)

res <- sqldf('select
  [group],  
  min(value1) [value1.min],
  max(value1) [value1.max],
  min(value2) [value2.min],
  max(value2) [value2.max],
  count(*) n,
  avg(value3 = 1) [value3 == 1],
  avg(value3 = 2) [value3 == 2],
  avg(value3 = 3) [value3 == 3]
  from data
  group by [group]')
setNames(as.data.frame(t(res[-1])), res$group)

дает: [ 1113]

               0    1
value1.min   1.0  2.0
value1.max   9.0 10.0
value2.min   1.0  2.0
value2.max   9.0 10.0
n           10.0 10.0
value3 == 1  0.4  0.4
value3 == 2  0.2  0.4
value3 == 3  0.4  0.2

skimr

Используя пакет skimr, мы можем сделать это:

library(dplyr)
library(skimr)
library(tidyr)

# L <- list("fraction = 1" = function(x) mean(x == 1),
#           "fraction = 2" = function(x) mean(x == 2),
#           "fraction = 3" = function(x) mean(x == 3))
levs <- levels(data$value3)
L <- lapply(levs, function(lv) function(x) mean(x == lv))
names(L) <- paste("fraction =", levs)

skim_with(integer = list(min = min, max = max), 
 factor = c(L, n = length), append = FALSE)

data %>% 
  group_by(group) %>%
  skim %>%
  ungroup %>%
  select(group, variable, stat, value) %>%
  spread(group, value)

, давая следующее:

# A tibble: 8 x 4
  variable stat          `0`   `1`
  <chr>    <chr>       <dbl> <dbl>
1 value1   max           9    10  
2 value1   min           1     2  
3 value2   max           9    10  
4 value2   min           1     2  
5 value3   fracion = 1   0.4   0.4
6 value3   fracion = 2   0.2   0.4
7 value3   fracion = 3   0.4   0.2
8 value3   n            10    10  

Обновление

Пересмотренное базовое решение; добавлены решения sqldf и skimr. Улучшено решение скимра.

7
задан bdukes 30 March 2009 в 20:35
поделиться

5 ответов

Действительно нет никакой "книги правила" для соглашений о присвоении имен. Вы находите тот, который работает на Вас.

Наиболее распространенное принятие с .NET должно следовать соглашениям о присвоении имен .NET Microsoft, и с веб-сервисами, просто рассматривать их как расширение Вашего блока, не как особый случай.

http://msdn.microsoft.com/en-us/library/ms229045.aspx

Так, GetMortgages (), GetMortgagesInPriceRange (startPrice, endPrice), и т.д.... прекрасен.

До "сохранения" много людей будет использовать "SubmitNoun".

5
ответ дан 6 December 2019 в 21:19
поделиться

Кроме того, необходимо, вероятно, постараться не перегружать методы веб-сервиса. Используйте отличные имена методов.

4
ответ дан 6 December 2019 в 21:19
поделиться

Я думаю, что Вы в порядке. Опишите их на основе того, что это, они делают. GetAllMortgages (), GetMortgagesInPriceRange (), и т.д.

Учтите любую проблемно-ориентированную терминологию. Например, если бы понятие ипотечной индустрии для диапазона цен ипотеки было "Демографическим", то GetMortgagesForDemographic был бы лучшим именем, даже если Вы знаете, что единственными "демографическими" функциями является диапазон цен.

0
ответ дан 6 December 2019 в 21:19
поделиться

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

GetXByY(params)
0
ответ дан 6 December 2019 в 21:19
поделиться

Вы также можете использовать метод службы GetMortgages () для получения документа 'вместо параметров и разработайте дополнительные критерии фильтрации в документе. Таким образом, у вас будет только один метод, который обрабатывает все «перегрузки».

<GetMortgages>
  <filter> .... </filter>
  <sort> .... </sort>
  <group> .... </group>
</GetMortgages>
3
ответ дан 6 December 2019 в 21:19
поделиться
Другие вопросы по тегам:

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