- 1
Именно поэтому я за «PHP» #8
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Именно поэтому я за «PHP» #8
#1: https://govnokod.ru/26462 https://govnokod.xyz/_26462
#2: https://govnokod.ru/26827 https://govnokod.xyz/_26827
#3: https://govnokod.ru/26832 https://govnokod.xyz/_26832
#4: https://govnokod.ru/27539 https://govnokod.xyz/_27539
#5: https://govnokod.ru/28267 https://govnokod.xyz/_28267
#6: https://govnokod.ru/28443 https://govnokod.xyz/_28443
#7: https://govnokod.ru/28746 https://govnokod.xyz/_28746
−2
Немного о пропертях
"Лично мне свойства не нравятся и я был бы рад, если бы в Microsoft решили убрать
их поддержку из .NET Framework и сопутствующих языков программирования."
"Я считаю, что разработчики используют свойства намного чаще, чем следовало
бы. Достаточно внимательно изучить список различий между свойствами и поля-
ми, чтобы понять: есть очень немного ситуаций, в которых определение свойства
действительно полезно, удобно и не запутывает разработчика. Единственная при-
влекательная черта свойств — упрощенный синтаксис, все остальное — недостатки,
в числе которых потеря в производительности и читабельности кода. Если бы я
участвовал в разработке .NET Framework и компиляторов, я бы вообще отказался от
свойств, вместо этого я предоставил бы разработчикам полную свободу реализации
методов GetXxx и SetXxx. Позже создатели компиляторов могли бы предоставить
особый упрощенный синтаксис вызова этих методов, но только при условии его
отличия от синтаксиса обращения к полям, чтобы программист четко понимал, что
выполняется вызов метода!"
Джефри Рихтер
Срач объявляется открытым
+144
sk = e.shiftKey?e.shiftKey:((kc == 16)?true:false);
Кэп с нами.
+1
package literatePrimes;
import java.util.ArrayList;
public class PrimeGenerator {
private static int[] primes;
private static ArrayList<Integer> multiplesOfPrimeFactors;
protected static int[] generate(int n) {
primes = new int[n];
multiplesOfPrimeFactors = new ArrayList<Integer>();
set2AsFirstPrime();
checkOddNumbersForSubsequentPrimes();
return primes;
}
private static void set2AsFirstPrime() {
primes[0] = 2;
multiplesOfPrimeFactors.add(2);
}
private static void checkOddNumbersForSubsequentPrimes() {
int primeIndex = 1;
for (int candidate = 3;
primeIndex < primes.length;
candidate += 2) {
if (isPrime(candidate))
primes[primeIndex++] = candidate;
}
}
private static boolean isPrime(int candidate) {
if (isLeastRelevantMultipleOfNextLargerPrimeFactor(candidate)) {
multiplesOfPrimeFactors.add(candidate);
return false;
}
return isNotMultipleOfAnyPreviousPrimeFactor(candidate);
}
private static boolean
isLeastRelevantMultipleOfNextLargerPrimeFactor(int candidate) {
int nextLargerPrimeFactor = primes[multiplesOfPrimeFactors.size()];
int leastRelevantMultiple = nextLargerPrimeFactor * nextLargerPrimeFactor;
return candidate == leastRelevantMultiple;
}
private static boolean
isNotMultipleOfAnyPreviousPrimeFactor(int candidate) {
for (int n = 1; n < multiplesOfPrimeFactors.size(); n++) {
if (isMultipleOfNthPrimeFactor(candidate, n))
return false;
}
return true;
}
private static boolean
isMultipleOfNthPrimeFactor(int candidate, int n) {
return
candidate == smallestOddNthMultipleNotLessThanCandidate(candidate, n);
}
private static int
smallestOddNthMultipleNotLessThanCandidate(int candidate, int n) {
int multiple = multiplesOfPrimeFactors.get(n);
while (multiple < candidate)
multiple += 2 * primes[n];
multiplesOfPrimeFactors.set(n, multiple);
return multiple;
}
}
https://habr.com/ru/post/508876/
Вероятно, хватит рекомендовать «Чистый код»
> Я остановлюсь на ещё одном вопиющем примере кода. Это генератор простых чисел из главы 8:
+1
Top 5 most loved languages:
Rust: 86.1%
TypeScript: 67.1%
Python: 66.7%
Kotlin: 62.9%
Go: 62.3%
Top 5 most dreaded languages:
VBA: 80.4%
Objective-C: 76.6%
Perl: 71.4%
Assembly: 70.6%
C: 66.9%
Top 5 most wanted languages:
Python: 30.0%
JavaScript: 18.5%
Go: 17.9%
TypeScript: 17.0%
Rust: 14.6%
https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages-wanted
Миллионы мух не могут ошибаться.
+170
class PHP {
function __construct(){
ob_start();
}
function echо ( $string='' ) {
echo $string . '<br/>';
}
function __destruct() {
ob_end_flush();
}
}
$php = new PHP();
$string = "It's work!";
$php->echо( $string );
/*
Пишу собственный шаблонизатор. Назову его "PHP Template Engine"
Помогите кто может, кто может помогите
*/
...Не в пример всяким Smarty...
−98
<% form_tag(advertiser_creatives_path(@advertiser), :method=>'post' ) do %>
<% content_tag :table, :class => "form-tabular" do %>
<% content_tag :thead do %>
<% content_tag :tr do %>
<% tag :th, :class=>'hide'%>
<% content_tag :th do %>
Concept (optional)
<%end%>
<% content_tag :th do %>
Ad Tag
<%end%>
<% content_tag :th do %>
Click-Through URL
<%end%>
<th/>
<%end%>
<%end%>
<% content_tag :tbody, :id=>'creative_sub_forms' do %>
<% creatives.each_with_index do |creative, index|
next unless creative.new_record?
%>
<% unless creative.errors.empty? %>
<tr class='nowrap'>
<td colspan='3'>
Error:
<% creative.errors.full_messages.each do |msg| %>
<%= msg %><br/>
<%end%>
</td>
</tr>
<%end%>
<%=render :partial => 'creative_fields', :locals => {:index => index, :creative => creative}%>
<%end%>
<%end%>
<tr>
<td colspan='3'><%= link_to_add_creative_fields "Add row" %></td>
</tr>
<%end%>
<br/>
<br/>
<%= submit_tag 'Continue', :class=>'button' %>
<%end%>
Товарищи, заставляйте нубой учить HTML. Ну, или HAML.
+7
https://tsar1997.blogspot.com/ блог царя
> Я продолжил умножать на ноль недоязычки. Сектанты там атакуют со всех сторон. Сидел в окопе всё это время.
лол
−1
https://habr.com/ru/post/459312/
Всегда считал, что "Agile" - говно.
+62
struct ErrorCodes
{
#define ERROR_ISNT_TEMPLATE_FILE -1
#define ERROR_ISNT_VALID_TEMPLATE_FILE -2
};